描述如下: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();
}
}
}
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();
}
}
}
需要将Web.Config下的SQLCONN连接串的数据库Northwind改为UserData
然后代码中cmm.CommandText = "StoredProcedure1";//此处调用存储过程
谢谢,按照你的方法修改Initial Catalog已经调用成功,但是进一步想,可不可以不需要每次都修改Initial Catalog就可以调用这两个存储过程?不吝赐教!
app.config好像要自己建立,但恕小生才疏学浅,对于“两个数据库连接字符串,分别对应你两个数据库,代码实现的时候注意重新创建SqlConnection并重新指定存储过程名称”不知如何实现,还望赐教!
(System.Configuration.ConfigurationManager
.ConnectionStrings["SQLCONN"].ConnectionString))
很明显 你连接数据库是根据配置文件连接的
可以更改ConnectionString 如:Windows验证:server =…; database=…;Integrated Security=SSPI;
这样就不用更改app.config
using (con = new SqlConnection(ConnectionString))
{}
cmm.CommandText="UserData.storedprocedure2";
userdata.dbo.storedprocedure2
这个方法是正确的!要加一个dbo~,谢谢~