首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

VS2005遇到的有点纠结的sql古怪有关问题,INSERT INTO select FROM 插入语句前天都正常现在不行

2012-06-13 
VS2005遇到的有点纠结的sql古怪问题,INSERT INTO select FROM插入语句前天都正常现在不行。代码C# codestri

VS2005遇到的有点纠结的sql古怪问题,INSERT INTO select FROM 插入语句前天都正常现在不行。
代码

C# code
string sqlshenhe = "INSERT INTO ClassLog ( DiQu,ZhuangTai,ShenheId,ShenheShiJian)                         (select DiQu,ZhuangTai,4,'2012-2-18 10:00:00'  FROM  ClassLogLuRu   WHERE    ClassLogLuRu_id =" + id + ") ";if (Convert.ToInt32(SqlHelper.ExecuteScalar(DBConn.ConnectionString, CommandType.Text, sqlshenhe)) > 0){string sql = "delete from [ClassLogLuRu]  where ClassLogLuRu_id =" + id;...................................}

如上语句本来前天运行很正常。但今天就出问题。走不到{}内string sql =这句了,

调试查原因也查不清楚
于是在sql2005里直接去运行sql:点“验证sql句法”:结果:
“已针对数据源检查过sql语法”
然后出来个“查询定义不同”的提示框,内容“分析sql窗格的内容时发生下列错误”
“列列表错误: 无法识别“SELECT”。
列列表错误: 无法识别“4”。
列列表错误: 无法识别“2012-2-18 10:00:00”。
INSERT 语句错误。
无法分析查询文本。”
再关系图窗格和条件窗格中无法用图形方式表示查询
忽略 撤销

以上......................
点忽略后,sql语句自动排列成
SQL code
INSERT INTO ClassLog                      (DiQu, ZhuangTai, ShenheId, ShenheShiJian) (SELECT     DiQu, ZhuangTai, 4, '2012-2-18 10:00:00'                                                                                                                         FROM          ClassLogLuRu                                                                                                                         WHERE      ClassLogLuRu_id = 701)


再点“验证sql句法”:结果:
“已针对数据源检查过sql语法”后什么都没出来,



原始语句直接运行,能成功执行插入,就是不能正常返回结果。
纠结的是前天都是正常的,现在为什么不行了?
结果只有用

int id1 = Convert.ToInt32(SqlHelper.ExecuteScalar(DBConn.ConnectionString, CommandType.Text, "select max(ClassLog_id) from ClassLog "));
来比较判断插入是否成功。


谢谢大家


[解决办法]
这里应该是不SQL的问题,你在其它问题上找找原因吧! 看下数据接口有没有什么问题!
[解决办法]
C# code
string sqlshenhe = @"INSERT INTO ClassLog ( DiQu,ZhuangTai,ShenheId,ShenheShiJian) select DiQu,ZhuangTai,4,'2012-2-18 10:00:00'  FROM  ClassLogLuRu   WHERE    ClassLogLuRu_id ="+id +";//把你的代码改成这样试试
[解决办法]
string sqlshenhe = @"INSERT INTO ClassLog ( DiQu,ZhuangTai,ShenheId,ShenheShiJian) select DiQu,ZhuangTai,4,'2012-2-18 10:00:00' FROM ClassLogLuRu WHERE ClassLogLuRu_id ="+id +";
改成这样试试:string sqlshenhe = string.Forma("INSERT INTO ClassLog ( DiQu,ZhuangTai,ShenheId,ShenheShiJian) select DiQu,ZhuangTai,4,{0} FROM ClassLogLuRu WHERE ClassLogLuRu_id ="+id +","2012-2-18 10:00:00");
我也出现过这种问题
最后请教了论坛里的人,发现原因居然是字符串错误:兴许是单引号和双引号的错误
[解决办法]
ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行
ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数。

热点排行