日期:2014-05-18  浏览次数:20869 次

如何在cs里调用另一个存储过程
描述如下:

1、在“数据库”文件夹下有两个数据库:一个是“著名的”Northwind(排在第一个),一个是自己建立的UserData(排在第二个),每个数据库下面都有自己的唯一一个存储过程,一个叫storedprocedure1,另一个叫storedprocedure2。


2、在sql server中新建查询,分别运行Northwind和UserData下的存储过程,查询结果没有任何问题。


3、在VS中调用Northwind的存储过程没有任何问题,但是一旦调用UserData就会显示:“找不到存储过程storedprocedure2”。


问题:

1、在VS中调用存储过程是不是默认调用第一个数据库(Northwind)中的存储过程?

2、该如何调用UserData下的存储过程,下面是调用Northwind下的存储过程StoredProcedure1的源代码:


C# code

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
  
public partial class _10_10 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        
        using (SqlConnection conn = new SqlConnection
   (System.Configuration.ConfigurationManager
   .ConnectionStrings["SQLCONN"].ConnectionString))
        {
            conn.Open();
            SqlDataAdapter sqldap = new SqlDataAdapter();
            SqlCommand cmm = new SqlCommand();
            cmm.Connection = conn;
            cmm.CommandType = CommandType.StoredProcedure;
            cmm.CommandText = "StoredProcedure1";//此处调用存储过程
            cmm.Parameters.Add("wlpz", SqlDbType.NVarChar);
            cmm.Parameters.Add("wlms", SqlDbType.NVarChar);
            cmm.Parameters.Add("ydlx", SqlDbType.NVarChar);
            cmm.Parameters.Add("kw", SqlDbType.NVarChar);
            //cmm.Parameters.Add("ctitle", SqlDbType.NVarChar);
            cmm.Parameters["wlpz"].Value = wlpz.Text;
            cmm.Parameters["wlms"].Value = wlms.Text;
            cmm.Parameters["ydlx"].Value = ydlx.SelectedValue.ToString();
            cmm.Parameters["kw"].Value = kw.SelectedValue.ToString();
            //cmm.Parameters["ctitle"].Value = ContactTitle.Text;
            sqldap.SelectCommand = cmm;
            DataTable dt = new DataTable();
            sqldap.Fill(dt);
           
            GridView1.DataSource = dt;
            GridView1.DataBind();
                   }
    }
}




------解决方案--------------------
调用UserData这个数据库下的存储过程
需要将Web.Config下的SQLCONN连接串的数据库Northwind改为UserData
然后代码中cmm.CommandText = "StoredProcedure1";//此处调用存储过程

------解决方案--------------------
如果在一台服务器上,可以加上数据库的前缀
userdata.dbo.storedprocedure2