修改資料庫中的資料
會修改資料的 SQL 陳述式 (例如 INSERT、UPDATE 或 DELETE) 不會傳回資料列;同樣地,許多預存程序會執行動作但不傳回資料列。若要執行不傳回資料列的命令,請使用適當的 SQL 命令和 Connection (和任何所需的參數) 來建立 Command 物件,並使用 Command 物件的 ExecuteNonQuery 方法。
ExecuteNonQuery 方法會傳回整數,表示受到執行的陳述式或預存程序影響的資料列數。如果執行多個陳述式,傳回的值就是受到所有執行的陳述式影響的記錄數總和。
下列程式碼範例使用 ExecuteNonQuery 來執行 INSERT 陳述式,將資料錄插入資料庫。
Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" & _
"Initial Catalog=northwind")
nwindConn.Open()
Dim insertStr As String = "INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')"
Dim insertCMD As SqlCommand = New SqlCommand(insertStr, nwindConn)
Dim recordsAffected As Int32 = insertCMD.ExecuteNonQuery()
[C#]
SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;" +
"Initial Catalog=northwind");
nwindConn.Open();
string insertStr = "INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";
SqlCommand insertCMD = new SqlCommand(insertStr, nwindConn);
Int32 recordsAffected = insertCMD.ExecuteNonQuery();
下列程式碼範例執行由執行資料庫目錄作業中的程式碼範例所建立的預存程序。預存程序不會傳回任何資料列,所以要使用 ExecuteNonQuery 方法,但是預存程序確實會收到輸入參數,並且傳回輸出參數和傳回值。
若使用 OleDbCommand 物件,則 ReturnValue 參數必須先加入 Parameters 集合。
Dim insertCatCMD As SqlCommand = New SqlCommand("InsertCategory" , nwindConn)
insertCatCMD.CommandType = CommandType.StoredProcedure
Dim workParm As SqlParameter
workParm = insertCatCMD.Parameters.Add("@RowCount", SqlDbType.Int)
workParm.Direction = ParameterDirection.ReturnValue
workParm = insertCatCMD.Parameters.Add("@CategoryName", SqlDbType.NChar, 15)
workParm = insertCatCMD.Parameters.Add("@Identity", SqlDbType.Int)
workParm.Direction = ParameterDirection.Output
insertCatCMD.Parameters("@CategoryName").Value = "New Category"
insertCatCMD.ExecuteNonQuery()
Dim catID As Int32 = CInt(insertCatCMD.Parameters("@Identity").Value)
Dim rowCount As Int32 = CInt(insertCatCMD.Parameters("@RowCount").Value)
[C#]
SqlCommand insertCatCMD = new SqlCommand("InsertCategory" , nwindConn);
insertCatCMD.CommandType = CommandType.StoredProcedure;
SqlParameter workParm;
workParm = insertCatCMD.Parameters.Add("@RowCount", SqlDbType.Int);
workParm.Direction = ParameterDirection.ReturnValue;
workParm = insertCatCMD.Parameters.Add("@CategoryName", SqlDbType.NChar, 15);
workParm = insertCatCMD.Parameters.Add("@Identity", SqlDbType.Int);
workParm.Direction = ParameterDirection.Output;
insertCatCMD.Parameters["@CategoryName"].Value = "New Category";
insertCatCMD.ExecuteNonQuery();
Int32 catID = (Int32)insertCatCMD.Parameters["@Identity"].Value;
Int32 rowCount = (Int32)insertCatCMD.Parameters["@RowCount"].Value;
請參閱
使用 .NET Framework 資料提供者存取資料 | 執行資料庫作業和修改資料 | OleDbCommand 類別 | OleDbConnection 類別 | OdbcCommand 類別 | OdbcConnection 類別 | SqlCommand 類別 | SqlConnection 類別