其實,這只是一個很小很小的問題,真的很小,可是卻讓我花費了整整一個小時的時間!~~
事情是這樣子的,公司一個很要好的同事因為他先前學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 那這樣就不會沖突了,又很直觀!~~~