У меня есть часть кода, которую я хочу проверить, существует ли значение, прежде чем я добавлю его в свою базу данных. Результатом всегда является то, что моя запись не существует, а я нет, почему?
public bool IsClientExist(string valuetocheck)
{
bool result = false;
try
{
string strQuery = "SELECT * FROM [" + strFileNamenopath + "] WHERE client = '" + valuetocheck + "'";
OleDbCommand cmd = new OleDbCommand(strQuery, conn);
OleDbDataReader reader = cmd.ExecuteReader();
result = reader.Read();
if (reader.Read())
{
result = true;
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace.ToString() + " " + ex.Message);
}
return result;
}
РЕДАКТИРОВАТЬ: я получаю ошибку после изменения кода sqlparamers
public bool IsClientExist(string valuetocheck)
{
.....
SqlParameter param = new SqlParameter
{
ParameterName = "@client",
Value = valuetocheck,
};
cmd.Parameters.Add(param);
var data = cmd.ExecuteScalar();
result = (int)data > 0;
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace.ToString() + " " + ex.Message);
}
return result;
}
ОШИБКА:
"The OleDbParameterCollection only accepts non-null OleDbParameter type objects, not SqlParameter objects."
EDIT2:
проблема связана с одной базой данных (я пытаюсь создать новую, но та же проблема), у меня есть другие базы для проверки значения дубликата, и это просто отлично работает, приведенный ниже код работает со всеми базами данных, кроме этой.
public bool IsRecordExist(string valuetocheck)
{
bool result = false;
try
{
string strQuery = "SELECT * FROM [" + strFileNamenopath + "] WHERE code = '" + valuetocheck + "'";
OleDbCommand cmd = new OleDbCommand(strQuery, conn);
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
result = true;
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show("Duplicate value " + ex.Message);
}
return result;
}