Język

SqlDataSource.Insert Metoda

Definicja

Wykonuje operację wstawiania przy użyciu InsertCommand ciągu SQL i wszystkich parametrów, które znajdują się w kolekcji InsertParameters .

public:
 int Insert();
public int Insert();
member this.Insert : unit -> int
Public Function Insert () As Integer

Zwraca

Wartość reprezentująca liczbę wierszy wstawionych do bazowej bazy danych.

Wyjątki

Nie SqlDataSource można nawiązać połączenia z bazowym źródłem danych.

Przykłady

W poniższym przykładzie kodu pokazano, jak wstawić dane do bazy danych przy użyciu kontrolki SqlDataSource i prostej strony formularzy internetowych. Bieżące dane w tabeli Dane są wyświetlane w kontrolce DropDownList . Możesz dodać nowe rekordy, wprowadzając wartości w kontrolkach TextBox , a następnie klikając przycisk Wstaw . Po kliknięciu przycisku Wstaw określone wartości zostaną wstawione do bazy danych, a następnie DropDownList odświeżone.

Ważna

Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa i wartościami są wstawiane do parametrów bez walidacji, co jest również potencjalnym zagrożeniem bezpieczeństwa. Inserting Użyj zdarzenia, aby zweryfikować wartości parametrów przed wykonaniem zapytania. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

Note

W tym przykładzie pokazano, jak używać składni deklaratywnej na potrzeby dostępu do danych. Aby uzyskać informacje na temat uzyskiwania dostępu do danych przy użyciu kodu zamiast znaczników, zobacz Uzyskiwanie dostępu do danych w programie Visual Studio.

<%@Page  Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
private void InsertShipper (object source, EventArgs e) {
  SqlDataSource1.Insert();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <asp:dropdownlist
        id="DropDownList1"
        runat="server"
        datasourceid="SqlDataSource1"
        datatextfield="CompanyName"
        datavaluefield="ShipperID" />

<!-- Security Note: The SqlDataSource uses a FormParameter,
     Security Note: which does not perform validation of input from the client.
     Security Note: To validate the value of the FormParameter, handle the Inserting event. -->

      <asp:sqldatasource
        id="SqlDataSource1"
        runat="server"
        connectionstring="<%$ ConnectionStrings:MyNorthwind %>"
        selectcommand="SELECT CompanyName,ShipperID FROM Shippers"
        insertcommand="INSERT INTO Shippers (CompanyName,Phone) VALUES (@CoName,@Phone)">
          <insertparameters>
            <asp:formparameter name="CoName" formfield="CompanyNameBox" />
            <asp:formparameter name="Phone"  formfield="PhoneBox" />
          </insertparameters>
      </asp:sqldatasource>

      <br /><asp:textbox
           id="CompanyNameBox"
           runat="server" />

      <asp:RequiredFieldValidator
        id="RequiredFieldValidator1"
        runat="server"
        ControlToValidate="CompanyNameBox"
        Display="Static"
        ErrorMessage="Please enter a company name." />

      <br /><asp:textbox
           id="PhoneBox"
           runat="server" />

      <asp:RequiredFieldValidator
        id="RequiredFieldValidator2"
        runat="server"
        ControlToValidate="PhoneBox"
        Display="Static"
        ErrorMessage="Please enter a phone number." />

      <br /><asp:button
           id="Button1"
           runat="server"
           text="Insert New Shipper"
           onclick="InsertShipper" />

    </form>
  </body>
</html>
<%@Page  Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Private Sub InsertShipper (ByVal Source As Object, ByVal e As EventArgs)
  SqlDataSource1.Insert()
End Sub ' InsertShipper
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <asp:dropdownlist
        id="DropDownList1"
        runat="server"
        datasourceid="SqlDataSource1"
        datatextfield="CompanyName"
        datavaluefield="ShipperID" />

<!-- Security Note: The SqlDataSource uses a FormParameter,
     Security Note: which does not perform validation of input from the client.
     Security Note: To validate the value of the FormParameter, handle the Inserting event. -->

      <asp:sqldatasource
        id="SqlDataSource1"
        runat="server"
        connectionstring="<%$ ConnectionStrings:MyNorthwind %>"
        selectcommand="SELECT CompanyName,ShipperID FROM Shippers"
        insertcommand="INSERT INTO Shippers (CompanyName,Phone) VALUES (@CoName,@Phone)">
          <insertparameters>
            <asp:formparameter name="CoName" formfield="CompanyNameBox" />
            <asp:formparameter name="Phone"  formfield="PhoneBox" />
          </insertparameters>
      </asp:sqldatasource>

      <br /><asp:textbox
           id="CompanyNameBox"
           runat="server" />

      <asp:RequiredFieldValidator
        id="RequiredFieldValidator1"
        runat="server"
        ControlToValidate="CompanyNameBox"
        Display="Static"
        ErrorMessage="Please enter a company name." />

      <br /><asp:textbox
           id="PhoneBox"
           runat="server" />

      <asp:RequiredFieldValidator
        id="RequiredFieldValidator2"
        runat="server"
        ControlToValidate="PhoneBox"
        Display="Static"
        ErrorMessage="Please enter a phone number." />

      <br /><asp:button
           id="Button1"
           runat="server"
           text="Insert New Shipper"
           onclick="InsertShipper" />

    </form>
  </body>
</html>

Uwagi

Przed wykonaniem operacji wstawiania wywoływana OnInserting jest metoda w celu wywołania Inserting zdarzenia. To zdarzenie można obsłużyć w celu zbadania wartości parametrów i wykonania dowolnego przetwarzania wstępnego przed operacją Insert . Aby wykonać operację wstawiania, SqlDataSourceView obiekt tworzy DbCommand obiekt przy użyciu InsertCommand tekstu i wszelkich skojarzonych InsertParameters właściwości, a następnie wykonuje DbCommand obiekt względem bazowej bazy danych.

Po zakończeniu operacji wywoływana OnInserted jest metoda w celu wywołania Inserted zdarzenia. To zdarzenie można obsłużyć, aby zbadać wszystkie wartości zwracane i kody błędów oraz wykonać dowolne przetwarzanie końcowe.

Metoda Insert jest udostępniana na potrzeby dostępu programowego do Insert metody . Jeśli kontrolka SqlDataSource jest skojarzona z kontrolką powiązaną z danymi, kontrolka powiązana z danymi automatycznie wywołuje metodę Insert .

Metoda Insert deleguje do Insert metody obiektu skojarzonego SqlDataSourceView z kontrolką SqlDataSource .

Ważna

Wartości są wstawiane do parametrów bez walidacji, co jest potencjalnym zagrożeniem bezpieczeństwa. Filtering Użyj zdarzenia, aby zweryfikować wartości parametrów przed wykonaniem zapytania. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

Dotyczy

Zobacz też