plz解决了这个问题:-i想要使用组合框从数据库中搜索数据 [英] plz solve this problm:-i want to search data from database using combobox

查看:83
本文介绍了plz解决了这个问题:-i想要使用组合框从数据库中搜索数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

先生我想使用combobox搜索数据(与数据库绑定),但显示以下错误



错误:-The参数化查询'(@ id varchar(50))select * from tbmobile其中uid = @ id'需要参数'@id',这是未提供的。



我的代码: -

  private   void  comboBox2_SelectedIndexChanged_1( object  sender,EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = select * from tbmobile其中uid = @ id;
cmd.Connection = con;
cmd.Parameters.Add( @ id,SqlDbType.VarChar, 50 )。Value = comboBox1.SelectedValue;
cmd.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
}

解决方案

帮助链接



SqlCommand.Parameters Property

  private   void  comboBox2_SelectedIndexChanged_1(< span class =code-keyword> object  sender,EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = select * from tbmobile其中uid = @ id;
cmd.Connection = con;
cmd.ParametersParameters.AddWithValue( @ id,comboBox1.SelectedValue); // 使用value添加参数可能是在创建任何异常。
// 删除或评论以下行
// < span class =code-comment> cmd.ExecuteNonQuery();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
}





希望它能够正常工作。


你正在传递varchar参数while必需参数是int

cmd.Parameters.Add(@ id,SqlDbType.Int).Value = Convert.ToInt32(comboBox1.SelectedValue);


< blockquote>您应该像这样更改代码(对给定的SELECT查询执行非查询没有意义)来管理组合框中没有选择任何内容的情况:

  private   void  comboBox2_SelectedIndexChanged_1( object  sender ,EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
if (comboBox1.SelectedValue == null
{
// 此案例没有参数!
cmd.CommandText = select * from tbmobile;
}
else
{
cmd.CommandText = 从tbmobile中选择*,其中uid = @ id;
cmd.Parameters.Add( @ id,SqlDbType.VarChar, 50 );
cmd.Parameters [ @ id] = comboBox1.SelectedValue;
}
//
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
}


sir i want to search data using combobox(bind with databse)but show this following error

ERROR:-The parameterized query '(@id varchar(50))select * from tbmobile where uid=@id' expects the parameter '@id', which was not supplied.

my code:-

private void comboBox2_SelectedIndexChanged_1(object sender, EventArgs e)
       {
           SqlCommand cmd = new SqlCommand();
           cmd.CommandText = "select * from tbmobile where uid=@id";
           cmd.Connection = con;
           cmd.Parameters.Add("@id",SqlDbType.VarChar, 50).Value = comboBox1.SelectedValue;
           cmd.ExecuteNonQuery();
           SqlDataAdapter da = new SqlDataAdapter(cmd);
           DataTable dt = new DataTable();
           da.Fill(dt);
           dataGridView1.DataSource = dt;
           dataGridView1.Refresh();
       }

解决方案

helping link

SqlCommand.Parameters Property

private void comboBox2_SelectedIndexChanged_1(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from tbmobile where uid=@id";
cmd.Connection = con;
cmd.ParametersParameters.AddWithValue("@id",comboBox1.SelectedValue);//add parameter with value may be it is creating any exception.
//remove or comment following line
//cmd.ExecuteNonQuery();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
} 



Hope so it'll work.


you are passing varchar parameter while required parameter is int
cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(comboBox1.SelectedValue);


You should change your code like this (make no sense to execute non query an given SELECT query) to manage also the case where nothing is selected in your combo box:

private void comboBox2_SelectedIndexChanged_1(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
if(comboBox1.SelectedValue == null)
{
 //No parameter for this case!
 cmd.CommandText = "select * from tbmobile";
}
else
{
 cmd.CommandText = "select * from tbmobile where uid=@id";
 cmd.Parameters.Add("@id",SqlDbType.VarChar, 50);
 cmd.Parameters["@id"]=comboBox1.SelectedValue;
}
//
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
}


这篇关于plz解决了这个问题:-i想要使用组合框从数据库中搜索数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆