SqlConnection PubsConn = new SqlConnection ("Data Source=server;integrated " + "Security=sspi;initial catalog=pubs;");
SqlCommand testCMD = new SqlCommand ("TestProcedure", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
SqlParameter IdIn = testCMD.Parameters.Add ("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
SqlParameter NumTitles = testCMD.Parameters.Add("@numtitlesout", SqlDbType.VarChar, 11);
NumTitles.Direction = ParameterDirection.Output ;
IdIn.Value = "213-46-8915";
PubsConn.Open();
VS.NET里++++++++++++++++++++++++++++++++++++++++++++++
SqlDataReader myReader = testCMD.ExecuteReader();
Console.WriteLine ("Book Titles for this Author:");
while (myReader.Read())
{ Console.WriteLine ("{0}", myReader.GetString (2)); };
myReader.Close() ;
Console.WriteLine("Number of Rows: " + NumTitles.Value );
Console.WriteLine("Return Value: " + RetVal.Value);
+++++++++++++++++++++++++++++++++++++++++++++++
=ASP.NET里
+++++++++++++++++++++++++++++++++++++++++++++++++
testCMD.ExecuteNonQuery();
mylabel.Text="返回值为"+NumTitles.Value.ToString();
PubsConn.Close();
+++++++++++++++++++++++++++++++++++++++++++++
使用 Command 对象的 ExecuteNonQuery 方法
此示例使用 ExecuteNonQuery 方法运行查询并返回参数值。ExecuteNonQuery 还返回在运行此查询后受影响的记录数。但是,ExecuteNonQuery 不从该存储过程返回任何行或列。
如果只需要知道更改的行数,那么在使用 INSERT、UPDATE 或 DELETE 语句时,ExecuteNonQuery 方法特别有用。当存储过程中仅使用 SELECT 语句时,您将收到 -1,因为查询不会影响任何行。
1. | 在运行 SQL Server 的计算机上创建下面的存储过程:Create Procedure TestProcedure3( @au_idIN varchar (11), @au_fnam varchar (30))As/* set nocount on */ Update authors set au_fname = @au_fnamwhere au_id = @au_idin return (5)
|
2. | 新建一个新的 Visual C# .NET Windows 应用程序项目。 |
3. | 对 System 和 System.Data 命名空间使用 using 语句,这样,在后面的代码中就无需限定这些命名空间中的声明了。将此代码添加到“窗体”代码模块的顶部。请确保只复制对应于您所选的提供程序的代码。SQL 客户端
using System.Data.SqlClient;
OLE DB 数据提供程序
using System.Data.OleDb;
|
4. | 用以下代码替换 Form1 代码模块中 private Form1_Load 事件后面的代码:SQL 客户端
string strRowAffect;
SqlConnection PubsConn = new SqlConnection ("Data Source=server;integrated Security=sspi;" + "initial catalog=pubs;");
SqlCommand testCMD = new SqlCommand ("TestProcedure3", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
SqlParameter RetVal = testCMD.Parameters.Add ("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;
SqlParameter IdIn = testCMD.Parameters.Add ("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
SqlParameter FnameIn = testCMD.Parameters.Add ("@au_fnam", SqlDbType.VarChar, 30);
FnameIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";
FnameIn.Value = "Marjorie";
PubsConn.Open();
strRowAffect =testCMD.ExecuteNonQuery ().ToString() ;
Console.WriteLine("Number of Rows: " + strRowAffect );
Console.WriteLine("Return Value: " + RetVal.Value);
OLE DB 数据提供程序
int intRowAffected;OleDbConnection PubsConn = new OleDbConnection ("Provider=SQLOLEDB;Data Source=server;" + "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand ("TestProcedure3", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;OleDbParameter FnameIn = testCMD.Parameters.Add ("@au_fname", OleDbType.VarChar, 30);FnameIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";FnameIn.Value = "Marjorie";PubsConn.Open();intRowAffected = testCMD.ExecuteNonQuery();Console.WriteLine("Number of Rows affected: " + intRowAffected);Console.WriteLine(RetVal.Value);
|
5. | 修改 Connection 对象的连接字符串,以便指向运行 SQL Server 的计算机。 |
6. | 运行上述代码。“输出”窗口显示受影响的行数 (intRowAffect) 和返回参数的值。 |