描述如下:1、在“数据库”文件夹下有两个数据库:一个是“著名的”Northwind(排在第一个),一个是自己建立的UserData(排在第二个),每个数据库下面都有自己的唯一一个存储过程,一个叫storedprocedure1,另一个叫storedprocedure2。
2、在sql server中新建查询,分别运行Northwind和UserData下的存储过程,查询结果没有任何问题。
3、在VS中调用Northwind的存储过程没有任何问题,但是一旦调用UserData就会显示:“找不到存储过程storedprocedure2”。
问题:1、在VS中调用存储过程是不是默认调用第一个数据库(Northwind)中的存储过程?2、该如何调用UserData下的存储过程,下面是调用Northwind下的存储过程StoredProcedure1的源代码: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();
                   }
    }
}

解决方案 »

  1.   

    没觉得你调用存储过程有什么问题。你看看你操作storedprocedure2这个存储过程的时候,连接字符串是否是连接到UserData这个数据库
      

  2.   

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

  3.   

    你应该在app.config创建两个数据库连接字符串,分别对应你两个数据库,代码实现的时候注意重新创建SqlConnection并重新指定存储过程名称
      

  4.   


    谢谢,按照你的方法修改Initial Catalog已经调用成功,但是进一步想,可不可以不需要每次都修改Initial Catalog就可以调用这两个存储过程?不吝赐教!
      

  5.   


    app.config好像要自己建立,但恕小生才疏学浅,对于“两个数据库连接字符串,分别对应你两个数据库,代码实现的时候注意重新创建SqlConnection并重新指定存储过程名称”不知如何实现,还望赐教!
      

  6.   

    SqlConnection conn = new SqlConnection
       (System.Configuration.ConfigurationManager
       .ConnectionStrings["SQLCONN"].ConnectionString))
    很明显 你连接数据库是根据配置文件连接的
    可以更改ConnectionString 如:Windows验证:server =…; database=…;Integrated Security=SSPI;
    这样就不用更改app.config
      

  7.   

    string ConnectionString=server =…; database=…;Integrated Security=SSPI;
    using (con = new SqlConnection(ConnectionString))
    {}
      

  8.   

    连接字符串不用改,将存储过程前加上数据库名就行,接分
    cmm.CommandText="UserData.storedprocedure2";
      

  9.   

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

  10.   


    这个方法是正确的!要加一个dbo~,谢谢~