У меня следующая ситуация:
string SelectDeb = @"select debid,naam,adres,huisnr,plaats
from debiteuren";
using (SqlConnection con = new SqlConnection(connection))
{
using (SqlDataAdapter sqlAdapt = new SqlDataAdapter(SelectDeb, con))
{
sqlAdapt.Fill(ds, TableName);
}
}
Приведенный выше код работает очень хорошо и без проблем, и он дает мне нужные мне строки.
Это всего лишь часть всего кода, но чтобы продолжить тему, я написал здесь только эти строки.
В чем проблема?
Проблема в том, что когда я изменяю sql на
string SelectDeb = @"select debid,naam,adres,huisnr,plaats,actief
from debiteuren
where actief = @actief";
sqlAdapt.SelectCommand.Parameters.AddWithValue("@actief", true)
или
string SelectDeb = @"select debid,naam,adres,huisnr,plaats,actief
from debiteuren
where actief = 'True'";
Я вообще не получаю рядов !!!
Неважно, если я использую параметр, если я заполняю предложение where без параметра, а просто заполняю любое предложение where данными, я не получаю никаких строк
Если я использую тот же sql напрямую в базе данных, я получаю ожидаемые строки.
Итак, что же не так?
Я использую VS2010 professional с SP1 и SQL Server 2008 R2 Express Edition
Когда я писал подобное приложение в VS2005 с SQL Server 2005 Express Edition, у меня нет проблем и я могу использовать параметры.
EDIT:
Спасибо всем за ответы.
TableName - это строка, представляющая набор результатов в наборе данных после заполнения.
Это дано как параметр к методу (не показан)
Единственная проблема заключается в том, что я не получаю строк вообще ПОСЛЕ использования выражения where.
Неважно, какой фильтр я использую.
Я также попробовал это с полем строк (NVarChar в базе данных), а затем также без строк в наборе результатов.
Таким образом, все работает нормально, но после одной строки кода, просто «где предложение», и это не работает.
У меня большой опыт (в базе данных и в Delphi, но плохо знаком с C #), и я никогда не видел ничего подобного.
Тип столбца 'actief' - это bool (в базе данных бит)
sql, который отлично работает в базе данных -
выберите debid, naam, adres, huisnr, huisnr_toev, postbus, почтовый индекс, postc_bus, tav, plaats, тел, actief
от дебитюрен
где actief = 'True'
Так что просто строка , где actief = 'True' работает не в коде в VS2010
ALso , где actief = 1 не работает
А также naam = 'Test' не работает (Test существует в базе данных)