2012年6月3日星期日

Incorrect syntax near the keyword user.解决方案

Incorrect syntax near the keyword user.解决方案

其实,这只是一个很小很小的问题,真的很小,可是却让我花费了整整一个小时的时间!~~

事情是这样子的,公司一个很要好的同事因为他先前学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的关键字。

SQL 关键字 关键字 关键字

园子们可以到上面看看!~~~~

诶,其实 都是粗心惹的货呀,看下面:

在postgresql、sql99以及sql92都把user作为保留字了!~经验啊经验啊!!!既然是保留字,就不能用了(是不是很霸道!~,不过木有办法啊!)

后来,我在google查了这个消息,发现很多人都有遇到这个问题:

原来那么多人都不认真,呵呵 希望这篇文章能给你带来帮助!~。

扯淡了 那么多,那解决就很简单了吧!

1.重命名表名。。这个方法很土。

2.在user这个外面加个[],比如[user] 这样就可以了。。。

其实,这里重要的还是表命名的问题,只要我们在平时多注意下就可以了。

提供个建议:

比如 user表,那么我们这样命名: t_user 那这样就不会冲突了,又很直观!~~~


TAG: