其实,这只是一个很小很小的问题,真的很小,可是却让我花费了整整一个小时的时间!~~
事情是这样子的,公司一个很要好的同事因为他先前学JAVA的,可能最近项目上需求需要学习.NET,所以就遇到取数据库的问题,刚开始想这多简单啊!~,然后他就创建了一个表,user,有3个字段,id,username和password。
远程连接到他的电脑,开始操作。
如下:
然后,帮他写了一个里面取username和password的sql语句:
string connStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Desktop\ProjectTest\练习项目集中营\Haha\WebApplication1\App_Data\Database1.mdf;Integrated Security=True;User Instance=True"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = new SqlCommand()) { cmd.CommandText = "Select * from user where id='" + 1 + "'";//这里需要注意,我用了 user 这个表名 悲剧从这里开始。。 cmd.Connection = conn; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string user = Convert.ToString(reader["username"]); string pass = Convert.ToString(reader["password"]); } } }
然后,点确定,很开心的等啊等。。
等到一个错误!~
说什么user语法错误?其实,我很粗心 没有看到keyword 这个东东。。然后,我就在找sql语句,或者是我上面的逻辑不清楚,百度。。
一个小时之后。。。
我猛然想起,keyword这个东东。然后在博客园找到了SQL的关键字。
园子们可以到上面看看!~~~~
诶,其实 都是粗心惹的货呀,看下面:
在postgresql、sql99以及sql92都把user作为保留字了!~经验啊经验啊!!!既然是保留字,就不能用了(是不是很霸道!~,不过木有办法啊!)
后来,我在google查了这个消息,发现很多人都有遇到这个问题:
原来那么多人都不认真,呵呵 希望这篇文章能给你带来帮助!~。
扯淡了 那么多,那解决就很简单了吧!
1.重命名表名。。这个方法很土。
2.在user这个外面加个[],比如[user] 这样就可以了。。。
其实,这里重要的还是表命名的问题,只要我们在平时多注意下就可以了。
提供个建议:
比如 user表,那么我们这样命名: t_user 那这样就不会冲突了,又很直观!~~~