因此,我正在使用MS Visual Studio在c#中创建一个应用程序,该应用程序将从sql服务器数据库中提取信息。 我创建了一个文本框和一个按钮来搜索我的gridview。我正在使用存储过程,该存储过程搜索多行以从Sql数据库中提取信息。 我的aspx.cs代码遇到问题。我尝试了多种方法来创建搜索框,但还没有碰到
这是我的搜索按钮代码。
我遇到错误-
“输入字符串的格式不正确。”
此错误在cmd.ExecuteNonQuery();
行上
非常感谢您的帮助。
protected void Button_srch_invest1_Click(object sender, EventArgs e)
{
string connectionStr = ConfigurationManager.ConnectionStrings["ORAProjectConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(connectionStr))
{
string find = "sp_SrcProtocols";
SqlCommand cmd = new SqlCommand(find, con);
cmd.Parameters.Add("@ORAID", SqlDbType.Int).Value = TextBox_Srch.Text;
cmd.Parameters.Add("@InvestLastName", SqlDbType.NVarChar).Value = TextBox_Srch.Text;
cmd.Parameters.Add("@ManagerLastName", SqlDbType.NVarChar).Value = TextBox_Srch.Text;
con.Open();
cmd.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "ORAID");
da.Fill(ds, "InvestLastName");
da.Fill(ds, "ManagerLastName");
GridView1.DataSource = ds;
GridView1.DataBind();
con.Close();
}
}
答案 0 :(得分:3)
默认情况下,SqlCommand
需要查询,而不是存储过程的名称。您必须在执行命令之前设置命令类型。
cmd.CommandType = CommandType.StoredProcedure;
答案 1 :(得分:1)
似乎您要将相同的文本框值(TextBox_Srch.Text
)传递给所有3个参数。并且第一个参数@ORAID
需要整数值,您可能正在传递文本。因此,这导致SQL Server引发以下错误。
输入字符串的格式不正确。
答案 2 :(得分:0)
这是行得通的(我将我的sql更改为只接受一个参数@search)
protected void Button_srch_invest1_Click(object sender, EventArgs e)
{
string connectionStr = ConfigurationManager.ConnectionStrings["ORAProjectConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(connectionStr))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "sp_SrcProtocols";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox_Srch.Text;
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
con.Close();
}
}