使用C#中的文本框和按钮搜索SQL Server数据库服务器

时间:2018-07-09 16:31:03

标签: c# asp.net sql-server

因此,我正在使用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();
    }   
}

3 个答案:

答案 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();




    }



}