c#与数据库,如何知道查询数据库中的某个值,如何将数据库中的某个元素写入textbox中
if (textBox1.Text != "")
{
SqlConnection connect = new SqlConnection("server=.;uid=sa;pwd=;database=student");
connect.Open();
SqlCommand com = new SqlCommand("select count(*) from Student where Sno='" + textBox1.Text + "'", connect);
int count = com.ExecuteNonQuery();
if (count > 0)
{
SqlDataAdapter sda = new SqlDataAdapter("select Sname from Student where Sno='" + textBox1.Text + "'", connect);
DataSet ds = new DataSet();
sda.Fill(ds, "student");
textBox2.Text = ds.Tables[0].Columns.ToString();
//SqlCommand com = new SqlCommand("delete from Student where Sno='" + textBox1.Text + "'");
MessageBox.Show("报刊删除成功!", "删除成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show(Convert.ToString(count));
}
connect.Close();
运行count=-1,请教高手原因……还有如何将选择的Sname写入textbox2中……
[解决办法]
count=-1
ExecuteNonQuery返回小于等于0的数,99%是查询失败
你监听一下,看看语句是什么,执行报不报错。
[解决办法]
ExecuteNonQuery
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
不会返回select的查询后的行数,你这个就是错误的。
[解决办法]
改成 textBox1.Text.trim() 这样 试一下
好像是这个 trim(). 就是去掉后面的空格。
textBox2.Text = ds.Tables[0].Columns.ToString();
改成
textBox2.Text = ds.Tables[0].Columns[1][1].ToString();
这里的[1][1] 根据你自己的需要制定第几行第几列
一个TEXT 控件属性文本只能接收一个值,你的 SqlDataAdapter sda = new SqlDataAdapter("select Sname from Student where Sno='" + textBox1.Text + "'", connect);
有可能查询出多行多列。所以得制定行列
[解决办法]
SqlCommand com = new SqlCommand("select count(*) AS CNum from Student where Sno='" + textBox1.Text + "'", connect);
ds = com.ExecuteDataSet();
int count = ds.Tables[0].Rows[0]["CNum"];
至于你想给textbox2赋值,是一样的,不过最后赋值有且只能有一个值
只有一行数据,就是ds.Tables[0].Rows[0]["CNum"];
多行数据需要确定是第几行那一列
this.textbox2.Text = ds.Tables[0].Rows[0]["列名"].ToString();
[解决办法]