2010-05-19 34 views
1

這是一個奇怪的,當我運行下面的代碼從數據庫返回所有行。 Imagaine如果這是更新或刪除會發生什麼。NPGSQL似乎有一個相當大的錯誤?

Dim cmd As New NpgsqlCommand 

    cmd.Connection = conn 
    cmd.CommandText = "select * FROM ac_profiles WHERE profileid = @profileId" 
    cmd.Parameters.Add("@profile", 58) 
    Dim dt As DataTable = DataAccess2.DataAccess.sqlQueryDb(cmd) 

    DataGridView1.DataSource = dt 

我的問題是爲什麼會發生這種情況?

回答

2

我不是pg-sql專家,但我強烈懷疑這是因爲您正在從SQL語句中使用的參數中添加不同的參數。我認爲你也使用錯誤的語法來引用一個參數。有關更多信息,請參閱user manual。試試這個:

cmd.Connection = conn 
cmd.CommandText = "select * FROM ac_profiles WHERE profileid = :profileid" 
cmd.Parameters.Add("profileid", 58) 
Dim dt As DataTable = DataAccess2.DataAccess.sqlQueryDb(cmd) 
+0

你是正確的,我只注意到,但你不能使用:在最新的版本 - 你會得到錯誤:在或接近語法錯誤:42601「:」 這看起來像一個非常dangerious錯誤給我。 – 2010-05-19 10:40:45

+0

忘掉:或@,都是工作。問題是這個名字,它也是敏感的。 – 2010-05-19 10:48:29

+0

問題似乎是使用@,這是不好的 - 你應該使用:。 如果您的參數名稱有誤,在使用時會給您一個語法錯誤:,但是如果您使用@那麼它不會返回所有行,@也是大小寫敏感的。 – 2010-05-19 10:58:38

相關問題