zoukankan      html  css  js  c++  java
  • C#调用存储过程简单完整例子(zz)

    CREATE PROC P_TEST
    @Name VARCHAR(20),
    @Rowcount INT OUTPUT
    AS
    BEGIN
     SELECT * FROM T_Customer WHERE NAME=@Name
     SET  @Rowcount=@@ROWCOUNT
    END
    GO
    ----------------------------------------------------------------------------------------
    --存储过程调用如下:
    ----------------------------------------------------------------------------------------
    DECLARE @i INT
    EXEC P_TEST 'A',@i OUTPUT
    SELECT @i
    --结果
    /*
    Name       Address    Tel                 
    ---------- ---------- --------------------
    A          Address    Telphone

    (所影响的行数为 1 行)

               
    -----------
    1

    (所影响的行数为 1 行)
    */
    ----------------------------------------------------------------------------------------
    --DotNet 部分(C#)
    --WebConfig 文件:
    ----------------------------------------------------------------------------------------
    ......
     </system.web>

       <!-- 数据库连接字符串
       -->
     <appSettings>
          <add key="ConnectString" value="server=(local);User ID=sa;Password=;database=Test" />
    </appSettings>

    </configuration>
    ----------------------------------------------------------------------------------------
    --C#代码:(用到两个测试控件,DataGrid1(用于显示绑定结果集合),Lable(用于显示存储过程返回单值)
    ----------------------------------------------------------------------------------------
    //添加数据库引用
    using System.Data.SqlClient;
    ......
     private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       String DBConnStr;
       DataSet MyDataSet=new DataSet();
       System.Data.SqlClient.SqlDataAdapter DataAdapter=new System.Data.SqlClient.SqlDataAdapter();
       DBConnStr=System.Configuration.ConfigurationSettings.AppSettings["ConnectString"];
       System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(DBConnStr);
       if (myConnection.State!=ConnectionState.Open)
       {
        myConnection.Open();
       }  
       System.Data.SqlClient.SqlCommand myCommand = new System.Data.SqlClient.SqlCommand("P_Test",myConnection);
       myCommand.CommandType=CommandType.StoredProcedure;   

       //添加输入查询参数、赋予值

       myCommand.Parameters.Add("@Name",SqlDbType.VarChar);
       myCommand.Parameters["@Name"].Value ="A";

       //添加输出参数
       myCommand.Parameters.Add("@Rowcount",SqlDbType.Int);
       myCommand.Parameters["@Rowcount"].Direction=ParameterDirection.Output;


       myCommand.ExecuteNonQuery();
       DataAdapter.SelectCommand = myCommand;

       if (MyDataSet!=null)
       {
         DataAdapter.Fill(MyDataSet,"table");
       }
       
       DataGrid1.DataSource=MyDataSet;
       DataGrid1.DataBind();
       //得到存储过程输出参数
       Label1.Text=myCommand.Parameters["@Rowcount"].Value.ToString();

       if (myConnection.State == ConnectionState.Open)
       {
        myConnection.Close();
       }

      }
    ----------------------------------------------------------------------------------------
    运行以上代码即可(返回记录集合和存储过程返回值)

    //补充:红色语句表明了要调用数据库服务器端存储过程,而不是调用web服务器端的sql语句。

    CommandType Enumeration

    Member nameDescription
    Supported by the XNA Framework Text An SQL text command. (Default.)
    Supported by the XNA Framework StoredProcedure The name of a stored procedure.
    Supported by the XNA Framework TableDirect The name of a table.

    When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure to be accessed. The user may be required to use escape character syntax or include qualifying characters if any of the specified tables named contain any special characters. All rows and columns of the named table or tables will be returned when you call one of the Execute methods of a Command object.(当CommandType属性被设置成StoredProcedure,CommandText属性应该被设置成被访问的存储过程的名字)

  • 相关阅读:
    python wx安装
    HttpPost请求将带有数组json格式数据作为请求体传入的简单处理方法
    介绍基于camera和IMU的SLAM算法数据采集环境搭建
    《Linux操作系统分析》课程学习总结报告
    安装Sophus出现error: lvalue required as left operand of assignment unit_complex_.real() = 1.问题的解决办法
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    QT 无法运行“rc.exe”?
    linux上boost库编程cmake配置出错
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1993526.html
Copyright © 2011-2022 走看看