C# 数据库问题 st = (int)mycomm.ExecuteScalar();这里你上面都没出错这里肯定是大于1的了,肯定不会小于0的了,你说说你想要达到什么样的效果的吧,感觉你这样写的好奇葩 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 object obj = mycomm.ExecuteScalar(); if(obj == System.DBNull .Value) { string sql = "update CafeVip set firstName='" + txtFirstName.Text + "',familyName='" + txtFamilyName.Text + "',orderTime='" + txtOrderTime.Text + "',Telephone=" + txtTelephone.Text + ",favriteCafe='" + txtFavriteCafe.Text + "',orderTable=" + txtOrderTable.Text + ",address='" + txtAddress.Text + "' where tID=" + tID; try { OleDbCommand mycomn = new OleDbCommand(sql, myOleConn); mycomn.ExecuteNonQuery(); RefreshDG(); txtFirstName.Text = ""; txtFamilyName.Text = ""; txtTelephone.Text = ""; txtFavriteCafe.Text = ""; txtOrderTime.Text = ""; txtAddress.Text = ""; txtOrderTable.Text = ""; } catch (Exception eb) { MessageBox.Show(eb.Message); } btnAdd.Enabled = true; btnDel.Enabled = true; btnEdit.Enabled = true; btnModify.Enabled = false; } else { MessageBox.Show("对不起,不能修改,因为此时间段的该桌已经被预定"); } ExcuteScalar并返回查询所返回的结果集中第一行的第一列,如果没有结果,返回的是NULL或者是DBNull.Value,可以用空值的判断方式。 我想表达的就是当txtOrderTime.Text和txtOrderTable.Text同时等于表里的ordertime和ordertable时提示错误信息,有一个不等于就可以修改成功 那你这样要先获取表里的ordertime和ordertable的值来和你的txtOrderTime.Text和txtOrderTable.Text进行判断先,判断成立就提示错误,不成立就写你更新表的代码,这样写才行的,你上面写的逻辑都不对的 谢谢啦,不过按这种方法修改后,当orderTime= txtOrderTime.Text 和 orderTable=" + txtOrderTable.Text 的时候,我还是可以修改,我希望他俩同时相等时是提示错的 问题出在你那个判断上面;导致执行else语句块有两种:1 sql语句执行成功,返回受影响行数 2 sql 语句没执行成功;如 select count(*) from task where false; 这条语句的返回结果是:0 当结果是0 的时候,你的if语句判断也不成功; 所以结果不是你想要的 string str = " select count(*) from CafeVip where orderTime='" + txtOrderTime.Text + "' and orderTable=" + txtOrderTable.Text + ""; OleDbCommand mycomm = new OleDbCommand(str, myOleConn); int st = -1; st = (int)mycomm.ExecuteScalar();这里不应该取执行结果影响的行数作为判断条件,select count(*) from CafeVip 这语句不管where 条件是true 还是 false 它执行结果的影响行数永远是1正确的做法是取执行结果的记录集,然后取记录集第一行第一列的值,判断它是否大于0,如果大于0,表示该桌已经被预定 radiobutton 存入数据库的问题 在线等combobox 读不出来值!急急急 关于c#调用SQL server存储过程 想将打印的曲线放入剪切板中,请各位分析一下 WinForm中datagrid更新 WebResponse有时会报timeout异常 想实现类似股票走势图的这种效果的折线图求指教 如何使用Npoi为工作表标签设置颜色,2007格式的。 只修改其中一列的外观,怎么做? 为什么?myAL不等于myAL1。请解释一下..... login form的问题 C#通过Excel遍历XLS文件每一行
object obj = mycomm.ExecuteScalar();
if(obj == System.DBNull .Value)
{
string sql = "update CafeVip set firstName='" + txtFirstName.Text + "',familyName='" + txtFamilyName.Text + "',orderTime='" + txtOrderTime.Text + "',Telephone=" + txtTelephone.Text + ",favriteCafe='" + txtFavriteCafe.Text + "',orderTable=" + txtOrderTable.Text + ",address='" + txtAddress.Text + "' where tID=" + tID;
try
{
OleDbCommand mycomn = new OleDbCommand(sql, myOleConn);
mycomn.ExecuteNonQuery();
RefreshDG();
txtFirstName.Text = "";
txtFamilyName.Text = "";
txtTelephone.Text = "";
txtFavriteCafe.Text = "";
txtOrderTime.Text = "";
txtAddress.Text = "";
txtOrderTable.Text = "";
}
catch (Exception eb)
{
MessageBox.Show(eb.Message);
}
btnAdd.Enabled = true;
btnDel.Enabled = true;
btnEdit.Enabled = true;
btnModify.Enabled = false;
}
else
{
MessageBox.Show("对不起,不能修改,因为此时间段的该桌已经被预定"); }
我想表达的就是当txtOrderTime.Text和txtOrderTable.Text同时等于表里的ordertime和ordertable时提示错误信息,有一个不等于就可以修改成功
导致执行else语句块有两种:1 sql语句执行成功,返回受影响行数 2 sql 语句没执行成功;如 select count(*) from task where false; 这条语句的返回结果是:0
当结果是0 的时候,你的if语句判断也不成功; 所以结果不是你想要的
select count(*) from CafeVip 这语句不管where 条件是true 还是 false 它执行结果的影响行数永远是1正确的做法是取执行结果的记录集,然后取记录集第一行第一列的值,判断它是否大于0,如果大于0,表示该桌已经被预定