Рейтинг:
1
Richard MacCutchan
Конечно, это сработает. Посмотрите на код, вы звоните ExecuteReader
на инструкции INSERT. Также вы не объявили значение параметра.
И пожалуйста, никогда сделать следующее
MessageBox.Show("Saved Successfully");
когда вы еще не проверили, что команда выполнена успешно. Вы можете работать неделями, месяцами или даже годами, не зная, что ваша база данных-мусор. Системные команды возвращают информацию о состоянии по уважительной причине, используйте ее.
Member 13037527
@Ричард SQL для объекта DataReader я использовал, чтобы проверить на наличие дубликатов.так что мешают вводить дубликаты.
Richard MacCutchan
Вы ничего не проверяете, и ваш оператор SQL по-прежнему неверен.
Member 13037527
@richard for duplicate check я написал это, но ошибка идет "
There is already an open DataReader associated with this Command which must be closed first.
Так что я закрыл там но все равно ошибка идет так что я преобразовал эти две строки в комментарии
public bool duplicatecheck()
{
string constring = @"Data Source=M2\SQL2016;Initial Catalog=inventoryDB;Integrated Security=True";
SqlConnection con = new SqlConnection(constring);// data connection
SqlCommand cmd = new SqlCommand("Select count(*) from companyDB where compname= @alias", con);
cmd.Parameters.AddWithValue("@alias", this.cmpname.Text);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
int TotalRows = 0;
TotalRows = Convert.ToInt32(cmd.ExecuteScalar());
//dr.Close();
if (TotalRows > 0)
{
MessageBox.Show("Alias " + dr[1].ToString() + " Already exist");
return true;
}
else
{
return false;
}
Richard MacCutchan
Вы звоните ExecuteReader
сразу же за этим последовали ExecuteScalar
Вам нужно остановиться и внимательно посмотреть на рабочий процесс вашего кода, а не случайным образом добавлять или изменять команды.