我发誓,我是都测试过了 还是不可以才提问的。
问题就是一个数据库查询问题:
窗体的。
节目有: 一个TextBox 和一个 查询按钮
点击查询 按钮 执行下面的代码:
1 string chaxunstr = "select * from KC_table where KC_name='"+textBox5.Text.Trim().ToString()+"'"; 2 ClassSQL newsql = new ClassSQL(); 3 newsql.SQLopen(); 4 int reg=newsql.DBoperarion(chaxunstr); 5 6 7 8 9 if (reg>0) 10 { 11 MessageBox.Show("查到结果了!"); 12 SqlDataAdapter da = new SqlDataAdapter("select * from KC_table where KC_name='" + textBox5.Text.Trim().ToString() + "'", newsql.SQLcon); 13 DataSet ds = new DataSet(); 14 da.Fill(ds, "new_table"); 15 dataGridView1.DataSource = ds.Tables[0]; 16 newsql.SQLclose(); 17 18 } 19 else 20 { 21 newsql.SQLclose(); 22 MessageBox.Show("查不到东西"); 23 }
问题 每次 都是 返回 0 或者-1 都不会得到1
用的是 SQL 2008 的 我在 数据的 T-SQL 查询执行下面的代码
select * from KC_table where KC_name='世贸商城'
就可以显示 该行
麻烦 帮忙一下 谢谢
这个是 数据库 的 执行类
1 /// <summary> 2 /// 数据库执行语句 3 /// </summary> 4 /// <param name="OPstring"></param> 5 /// <returns></returns> 6 public int DBoperarion(string OPstring) 7 { 8 SqlCommand mycmd = new SqlCommand(OPstring, SQLcon); 9 try 10 { 11 int OPresult = mycmd.ExecuteNonQuery(); 12 return OPresult; 13 } 14 catch 15 { 16 return 0; 17 } 18 finally 19 { 20 SQLclose(); 21 } 22 }
不能通过这个来判断是否查到数据,用ExecuteReader或SqlDataAdpter来查询数据,用ExecuteNonQuery来执行其它操作。
最好也不要用ExecuteNonQuery的返回值来判断影响行数。
要查询符合条件条数的话,有两点要改:
1.string chaxunstr = "select count(1) from KC_table where KC_name='"+textBox5.Text.Trim().ToString()+"'";
2.int OPresult = int.Parse(mycmd.ExecuteScalar().ToString());
ExecuteNonQuery函数返回的是执行此sql语句后对整个表产生影响的行数,一般用于删除、添加、修改操作,查询记录是否存在可以用ExecuteScalar函数。