C#根据查询条件 取到这个数据为空时,

www5net 2014-05-16 03:28:30
C#根据查询条件 取到这个数据为空时,怎么对这个数据进行判断,当其为空时,然后往数数据库插入数据。
网站的,c#,sql数据库
代码:string sqlstr = "select * from ym where id= ' " + id + "'and name ='" + CheckBox2.Text.ToString().Trim() + "'";
SqlCommand cmd = new SqlCommand(sqlstr, con);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
if (sdr.Read())
{
}
else
{
if (sdr["name"].ToString().Trim() == "")
{
string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')";
SqlCommand cmd1 = new SqlCommand(sqlstr1, con);
// SqlDataReader sdr1 = cmd.ExecuteReader();
}
}
sdr.Close();
}
这个没查到数据就报错,求教,麻烦各位
...全文
439 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
www5net 2014-05-16
  • 打赏
  • 举报
回复
应该能出来的答案: http://bbs.csdn.net/topics/390789802
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 16 楼 xdashewan 的回复:
你把insert逻辑放外面执行,在不执行就是你自己代码有问题
这个可以的 把这句加上去 SqlDataReader sdr1 = cmd.ExecuteReader();把上面的这句SqlDataReader sdr = cmd.ExecuteReader();隐藏 因为数据库里面id设了主键 当重复加的时候会报错 这个有什么办法让他不报错否 不报错也就成功了
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
你把insert逻辑放外面执行,在不执行就是你自己代码有问题
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 14 楼 xdashewan 的回复:
[quote=引用 13 楼 u013722684 的回复:] [quote=引用 12 楼 xdashewan 的回复:] string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')"; SqlCommand cmd1 = new SqlCommand(sqlstr1, con); 而且你insert又没执行,我劝你还是去网上找几个SqlCommand的例子看看吧
数据库没这条insert数据,要实现的就是CheckBox2.Checked == true时 先做个判断 数据库里有没有这条数据 如果有那就不执行,没有就执行insert这条数据[/quote] 那就代码反一反呗[/quote] if和else 都放过了 就是不执行好就是 select 做了 上面没数据,然后 if (sdr.Read())这个好像完全没用
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
引用 13 楼 u013722684 的回复:
[quote=引用 12 楼 xdashewan 的回复:] string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')"; SqlCommand cmd1 = new SqlCommand(sqlstr1, con); 而且你insert又没执行,我劝你还是去网上找几个SqlCommand的例子看看吧
数据库没这条insert数据,要实现的就是CheckBox2.Checked == true时 先做个判断 数据库里有没有这条数据 如果有那就不执行,没有就执行insert这条数据[/quote] 那就代码反一反呗
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 12 楼 xdashewan 的回复:
string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')"; SqlCommand cmd1 = new SqlCommand(sqlstr1, con); 而且你insert又没执行,我劝你还是去网上找几个SqlCommand的例子看看吧
数据库没这条insert数据,要实现的就是CheckBox2.Checked == true时 先做个判断 数据库里有没有这条数据 如果有那就不执行,没有就执行insert这条数据
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')"; SqlCommand cmd1 = new SqlCommand(sqlstr1, con); 而且你insert又没执行,我劝你还是去网上找几个SqlCommand的例子看看吧
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
你数据库到底有没数据
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 9 楼 xdashewan 的回复:

 SqlCommand cmd = new SqlCommand(sqlstr, con);
         SqlDataReader sdr = cmd.ExecuteReader();
         if (sdr.Read())
         {
                  //执行
         }
         else
        {
                //不执行
        }
完整代码你看一下: int id =3; string constr = ConfigurationManager.AppSettings["cn"].ToString(); SqlConnection con = new SqlConnection(constr); con.Open(); if (CheckBox2.Checked == true) { string sqlstr = "select * from ym where id= ' " + id + "'and name ='" + CheckBox2.Text.ToString().Trim() + "'"; SqlCommand cmd = new SqlCommand(sqlstr, con); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read()) { string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')"; SqlCommand cmd1 = new SqlCommand(sqlstr1, con); } else { // SqlDataReader sdr1 = cmd.ExecuteReader(); } sdr.Close(); } else { string sqlstr2 = "delete from ym where id= '" + id + "'and name ='" + CheckBox2.Text.ToString().Trim() + "'"; SqlCommand cmd2 = new SqlCommand(sqlstr2, con); SqlDataReader sdr2 = cmd2.ExecuteReader(); } con.Close(); 放上面下面都不行 不知道为什么 没有报错 就是没数据加到数据库
xdashewan 2014-05-16
  • 打赏
  • 举报
回复

 SqlCommand cmd = new SqlCommand(sqlstr, con);
         SqlDataReader sdr = cmd.ExecuteReader();
         if (sdr.Read())
         {
                  //执行
         }
         else
        {
                //不执行
        }
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 7 楼 xdashewan 的回复:
[quote=引用 6 楼 u013722684 的回复:] [quote=引用 5 楼 xdashewan 的回复:] if (sdr.Read())你程序走的是else?
不能这么搞吗? 我本来是放上面的,只是他老是不走那边 就放下面试试, 新手[/quote] sdr.Read()这是判断有没有数据的啊,而且你执行了两次,第一条数据给你跳过去了[/quote] 这个要怎么写 有数据就不执行insert ,没数据就执行
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
引用 6 楼 u013722684 的回复:
[quote=引用 5 楼 xdashewan 的回复:] if (sdr.Read())你程序走的是else?
不能这么搞吗? 我本来是放上面的,只是他老是不走那边 就放下面试试, 新手[/quote] sdr.Read()这是判断有没有数据的啊,而且你执行了两次,第一条数据给你跳过去了
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 5 楼 xdashewan 的回复:
if (sdr.Read())你程序走的是else?
不能这么搞吗? 我本来是放上面的,只是他老是不走那边 就放下面试试, 新手
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
if (sdr.Read())你程序走的是else?
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 2 楼 iwantknowwhat 的回复:
没查到数据的话, if (sdr["name"].ToString().Trim() == "")这个判断是应该是会报错的,你可以把这个if判断直接拿掉的看看
没用 好像上面的 if (sdr.Read()) 也有问题 , 这个查询取出来的是没有记录的,根据这个查询做个判断 有记录就不加,没记录就加一条
www5net 2014-05-16
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
sdr["name"]先判断是否为null,不是null才能ToString(),严谨点应该先判有没name这个列

我取取出来的这个值就是空的,列存在的 用null 还是报这个错 如图:
小鸟123 2014-05-16
  • 打赏
  • 举报
回复
没查到数据的话, if (sdr["name"].ToString().Trim() == "")这个判断是应该是会报错的,你可以把这个if判断直接拿掉的看看
xdashewan 2014-05-16
  • 打赏
  • 举报
回复
sdr["name"]先判断是否为null,不是null才能ToString(),严谨点应该先判有没name这个列

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧