我想做"当我写"项目代码"在文本框上单击搜索,它将搜索&发现sql数据库中的项目有该项目代码。并将其命名为textbox2(ITEM NAME)。我该怎么做 ?我可以把它带到colomn / raw但Idk我怎么能把这个项目名称带到textbox2
我可以搜索数据库上的数据并将其带到dataGridview。使用此代码
if (textBox1.Text.Trim() == "") errorProvider1.SetError(textBox1, "Fiil in the blanks");
else errorProvider1.SetError(textBox1, "");
conn.Open();
string regs = "SELECT * from stackTable where itemCodu=@Cod";
SqlCommand cmd = new SqlCommand(regs, conn);
cmd.Parameters.AddWithValue("@cod", textBox1.Text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
gridView.DataSource = dt;
conn.Close();
---操作顺序(我想做的事:D)
在数据库中搜索
如果找到,请在Textbox2上提供数据
如果找不到,错误提供程序,消息文本框
答案 0 :(得分:0)
所以你有一个数据表,所有你应该做的就是用一个简单的if语句检查填充后的计数:
if(dt.rows.count == 0)
{
MessageBox.Show("Not Found!!");
}
else
{
textBox2.DataBindings.Add("Text", dt, "the column you want to use for textbox2");
}
您还应该使用using
语句,以便正确处理所有对象。
这是我如何写你所拥有的一个例子:
textbox2.DataBinding.Clear(); //clear the databinding so it can be added for the new data found.
using(SqlConnection conn = new SqlConnection("Your connection string here")
using (SqlDataAdapter da = new SqlDataAdapter("SELECT * from stackTable where itemCodu=@Cod")
{
da.SelectCommand.Parameters.Add("@Cod", sqlDbType.VarChar).Value = textBox1.Text; //see comment below for this change
da.fill(dt);
if (dt.Rows.Count == 0)
{
//display not found message
}
else
{
//bind to textbox (described above)
}
}
另请注意,通常最好指定参数应接收的数据类型,而不是允许隐式输入参数。这可以通过使用Add而不是AddWithValue
来完成cmd.Parameters.Add("@cod", SqlType.VarChar).Value = textBox1.Text;
您的代码最后要注意的是,您可以在没有SqlCommand的情况下使用sqlDataAdapter。
我认为应该添加另一件事:
如果您知道您只会从搜索中收到1行或0行,并且您对绑定数据不感兴趣,则只需将文本框的.Text
设置为该行的列即可。数据表。
例如,如果要在名为Item的表中显示一列,则只需使用
即可textBox2.Text = dt.Rows[0]["Item"].ToString();