2012-08-04 86 views
0

我正在开发一个应用程序,它不时地执行查询以从我的MySQL数据库中检索数据。最近我问一个朋友试用它来检查它是否正常工作......它显然没有。从他的应用开始,在启动后立即停止响应。我想我们必须以某种方式进行调试,所以我在一个try..catch语句中将Main()方法包装在Program.cs中。返回错误“”你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第一行附近使用正确的语法“”。现在我已将这个错误缩小到两个可能的查询。在这里,他们是:他的电脑上有SQL语法错误,但没有在我的电脑上?

查询1:

"SELECT COUNT(*) FROM " + newsTable + " ;" 

newsTable包含:新闻

查询2:

"SELECT " + newsTitle + ", " + newsAuth + " FROM " + newsTable + " ORDER BY " + newsID + " DESC LIMIT " + countnews + ", " + countnews + 1 + ";" 

它们都含有除countnews变量字符串包含一个整数。

关于这一切的奇怪之处在于,当我在我的计算机上启动应用程序时,此错误从未发生,但工作正常。他只是更新MySQL和我们在相同的.NET框架,4.

我出来的想法!

由于提前,

弗雷德里克

PS:值得关注的可能是这两个查询都位于我的表单应用程序中的Main()方法。当然它放在InitializeComponent()后面;

+0

数据库的架构在每台计算机上是否相同?另外,你的同事的机器上是否有来自MySQL的确切错误? – 2012-08-04 02:29:47

+0

您需要通过查看有问题的查询进一步缩小范围。你的列名和表名似乎是动态的(它们是在哪里定义的?),并且很可能错误在这些名字中。 – Mufaka 2012-08-04 03:53:13

+1

“将其缩小为两个可能的查询” - 您需要做的就是正确处理异常,并且您将拥有一切:堆栈跟踪,行号,错误文本等。我​​所看到的最重要的事情是:什么是您尝试执行的确切查询。由于您是在运行时构建它,所以我们不能告诉您.. – 2012-08-04 07:31:21

回答

0

如果您想了解: - 为您的2个查询生成两个存储过程而不是sql注入 为什么? 因为: -stored程序很容易测试MySQL数据库上,如果它的工作原理,它的工作原理无处不在 - 它是一个糟糕的ID,试图用C#SQL调试,它讲究喜欢你的展后它 ;-)

+0

我明白你的意思了。但在这些查询中传递的值与我的comp完全相同,因为我导出了整个.sql。 – Fredrik 2012-08-04 09:31:35

+0

高兴地帮助你;-) – 2012-08-04 10:25:50

0

对,所以我又经历了一切,意识到缺乏人性的因素再次发生。我忘了导出实际的数据,以及.sql,这真的是我的智力迟钝,现在是凌晨3点..谢谢你试图帮助我解决这个愚蠢的问题,真正感激它。

Fredrik

相关问题