在做三层登录的例子中,碰到一个很棘手的问题,问题显示如上,刚开始看到这个问题,第一反应:数据库连接有问题?或者是sql语句有问题?现在就开始逐一排除掉所有的可能。首先数据库的连接我确保代码没有错误,其次数据库那边也都正常,所以,排除掉;接下来,第二种情况(可真是让我将近郁闷一天):sql语句:我代码中是这样的:
<span style="font-size:18px;">cmd.CommandText = "SELECT * FROM User WHERE UserName = @UserName AND Password = @Password";</span>根据数据库所学的东西,我实在看不出是哪里出了问题,于是我在数据库中同样查询一遍,结果显示:
就由此判断SQL语句有问题,于是乎请教高手,高手也说没问题,这可怎么办?只能上网,最终否认自己当初的判断,原因如下:
“user”是SQL Server 保留的关键字,所以用select * from user where语句查询会提示错误,加上中括号,声明其不是保留字。
解决方案:在User上加上中括号[].
原因:加上中括号目的是:防止用户使用的名称和系统保留字冲突。
就这样,问题迎刃而解。
其中,关于“SQL Server 保留的关键字”一说,网上这么解释:
SQL Server使用保留关键字定义,操作,和访问数据库。保留关键字是sql server使用的transact-sql语言的一部分,用语分析和理解transact-sql语句和批处理。
详细的关键字参考如下资料:http://tech.sina.com.cn/roll/2006-09-30/1117116038.shtml