数据通库之间的同步if语句逻辑问题

mr_mrl 2016-05-12 06:04:16
我现在用数据中心与本地数据库之间的教师数据的同步,用HG(工号)判断在本地数据库中是否已经存在此教师,如果存在,则对数据进行更新,如果没有,则进行insert into插入操作,但是if语句逻辑出现问题,一直执行if之下的语句,并不执行else的下面的语句,也就是说一直没有执行插入新数据的操作,求大神帮忙检查出问题所在,代码如下:
queryString = "SELECT GH,DWH,XM,SFZJH,DQZTM FROM jzgjcsjxx WHERE DWH = '1250000'";
OracleConnection myConnection = new OracleConnection(connectionString);
OracleCommand myORACCommand = new OracleCommand(queryString, myConnection);
myORACCommand.CommandText = queryString;
myConnection.Open();
OracleDataReader HG = myORACCommand.ExecuteReader();
while (HG.Read())
{
myConnection1.Open();
String queryString1 = "SELECT 教师id FROM 教师 WHERE 标准工号 = '"+ HG["GH"] +"'";
SqlCommand mycommand = new SqlCommand(queryString1, myConnection1);
SqlDataReader AB = mycommand.ExecuteReader();
if(AB.Read())
{
AB.Close();
String queryString2 = "update 教师 set 标准工号 = '" + HG["GH"] + "',姓名= '" + HG["XM"] + "',状态 = '" + HG["DQZTM"] + "' where 标准工号 = '" + HG["GH"] + "'";
SqlCommand mycommand2 = new SqlCommand(queryString2, myConnection1);
SqlDataReader CD = mycommand2.ExecuteReader();
Response .Write (HG["XM"] + "<br>");

}

else
{
AB.Close();
String queryString3 = "insert into 教师 (教研室id,身份证号,姓名,密码,职称,状态,标准工号) values ('4','"+HG["SFZJH"]+"', '"+ HG["XM"]+"' , '00000000','讲师', '"+HG["DQZTM"]+"','"+HG["GH"]+"')";
SqlCommand mycommand3 = new SqlCommand(queryString3, myConnection1);
SqlDataReader EF = mycommand3.ExecuteReader();
Response.Write(HG["GH"] + "<br>");

}

myConnection1.Close();

}


myConnection.Close();
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr_mrl 2016-05-13
  • 打赏
  • 举报
回复
谢谢各位大神,整好了,应该是数据库出点问题,昨天显示没有插入成功,今天在运行就插入成功了,谢谢各位大神了。
江南小鱼 2016-05-12
  • 打赏
  • 举报
回复
肉眼看起来代码貌似没什么问题,具体有没有问题,要你去debug 给你几点建议: 1、判断是不是存在,可以考虑ExecuteScalar,sql语句改成
String queryString1 = "SELECT count(1) FROM 教师 WHERE 标准工号 = '"+ HG["GH"] +"'";
2、可以构造sql语句,进行批量提交嘛,没必要每次打开、关闭myConnection1,数据库连接资源很宝贵滴 3、学会自己调试找问题,你这种错误很容易找到
wtnu200 2016-05-12
  • 打赏
  • 举报
回复
SELECT GH,DWH,XM,SFZJH,DQZTM FROM jzgjcsjxx WHERE DWH = '1250000' 你拿这个语句在mssql管理工具上执行看一下有没有数据,如果有数据,最好是断点看看HG["GH"] 有没有数据。 学会断点,你这个处理问题就很简单了,不用靠猜
蝶恋花雨 2016-05-12
  • 打赏
  • 举报
回复
if (AB.IsDBNull(AB[0])) 用这个判断下 { } 断点看下 HG["GH"] 得到值了没 String queryString1 = "SELECT 教师id FROM 教师 WHERE 标准工号 = '"+ HG["GH"] +"'";
  • 打赏
  • 举报
回复
debug看AB.Read()出来的是什么东西,也就是Ab[0]是什么

62,046

社区成员

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

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

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

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