Я столкнулся с такой ситуацией, когда этот оператор SQL не работает ..
command.Parameters.AddWithValue("@OA_Name", obj.GEToperatingauthority());
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = [@OA_Name]";
но этот оператор SQL работает, когда я изменил ['@OA_Name'] на просто значение, найденное в таблице.
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = ['OA 101']";
Я проверил значение, полученное от obj.GetOperatingauthority (), и оно точно такое же, как в базе данных. Я использовал reader.hasrows, чтобы проверить, возвращены ли какие-либо строки ..
Кстати, я использую C # и доступ к базе данных 2010 года.
edit: я вставил большую часть кода ниже:
using (var command = connection.CreateCommand())
{
connection.Open();
command.CommandType = CommandType.Text;
command.Parameters.AddWithValue("@NRIC", obj.GETnricfinnumber());
command.Parameters.AddWithValue("@Participant_Name", obj.GETname());
command.Parameters.AddWithValue("@Gender", obj.GETgender());
command.Parameters.AddWithValue("@DOB", obj.GETdateofbirth());
command.Parameters.AddWithValue("@Nationality", obj.GETnationality());
command.Parameters.AddWithValue("@Race", obj.GETrace());
command.Parameters.AddWithValue("@Residential_Address", obj.GETresidentialaddress());
command.Parameters.AddWithValue("@Contact_Number", obj.GETcontactnumber());
command.Parameters.AddWithValue("@Email_Address", obj.GETemailaddress());
command.CommandText = "SELECT [NRIC] FROM [Participant_Table] WHERE [NRIC] = [@NRIC]";
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
if (reader.GetString(0).ToLower().Equals(obj.GETnricfinnumber().ToLower()))
{
message.show(1, "", "exists");
//return false;
}
}
}
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = @OA_Name";
command.Parameters.AddWithValue("@OA_Name", obj.GEToperatingauthority());
using (var reader = command.ExecuteReader())
{
if (!reader.HasRows)
{
message.show(1, "", "no rows!"); return false; //to test whether has rows or no rows
}
edit 2: getOperatingAuthority не может быть неправильным, поскольку в основном это система с "замкнутым циклом", в которой OA_Name используется для заполнения комбинированного списка, а значения, выбранные из этого поля со списком, используются для обращения к таблице для получения ID.