2010-05-19 4 views
1

Это странно, когда я запускаю следующий код, все строки возвращаются из db. 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

Ваш правильный, я только заметил, что, однако, вы не можете использовать: в последней версии - Вы получаете ERROR: 42601: ошибка синтаксиса или вблизи «:» Это выглядит очень dangerious ошибка для меня. –

+0

Забудьте: или @, оба работают. проблема - это имя, это тоже чувствительный случай. –

+0

Проблема заключается в использовании @, это плохо - вы должны использовать:. Если вы получаете что-то не так, как имя параметра, это даст вам синтаксическую ошибку при использовании:, однако, если вы используете @, то она не будет и возвращает все строки, @ также чувствительна к случаю. –