Обновление и удаление записей из DataGridView и базы данных - PullRequest
1 голос
/ 19 мая 2011

Я новичок здесь, я хочу обновить и удалить записи из таблицы данных, а также из базы данных. У меня есть следующий код для обновления и удаления ..

int num = 0;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
    if (Convert.ToBoolean(row.Cells[0].Value))
    {
        string ID = this.dataGridView1.Rows[row.Index].Cells["ID"].Value.ToString();
        string CoCode = this.dataGridView1.Rows[row.Index].Cells["CoCode"].Value.ToString();
        string CoName_mar = this.dataGridView1.Rows[row.Index].Cells["CoName_mar"].Value.ToString();

        con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\mayur patil\\My Documents\\Dairy_db\\tblCompany_1.mdb";
        con.Open();

        OleDbCommand cmd = new OleDbCommand("UPDATE tblCompany_1 SET (CoCode=@CoCode,CoName_mar=@CoName_mar where ID=@ID)", con);

        cmd.Parameters.AddWithValue("CoCode", CoCode);
        cmd.Parameters.AddWithValue("CoName_mar", CoName_mar);
        cmd.Parameters.AddWithValue("ID", ID);
        cmd.ExecuteNonQuery();
        con.Close();
        num++;
    }
}
if (num > 0)
{
    MessageBox.Show("Record Updated !");        
}
this.Hide();
listOfCompany v = new listOfCompany();
v.ShowDialog();

Добавить для удаления записей ..

OleDbConnection con = new OleDbConnection();
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data  Source=C:\\Documents and Settings\\mayur patil\\My Documents\\Dairy_db\\tblCompany.mdb";
OleDbCommand cmd = new OleDbCommand ("DELETE FROM tblCompany WHERE (CoCode = i)");

con.Open();

cmd.ExecuteNonQuery();
con.Close();
  1. для запроса на обновление я получаю сообщение об ошибке «Синтаксическая ошибка OleDbException в UPDATE» в cmd.ExecuteNonQuery();

  2. длязапрос на удаление получаю сообщение об ошибке «OleDbException было обработано. Не удалось найти устанавливаемый ISAM».на con.Open();

как мне преодолеть эту проблему?

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

1) Удалите ненужные скобки:

OleDbCommand cmd = new OleDbCommand("UPDATE tblCompany_1 SET CoCode=@CoCode,CoName_mar=@CoName_mar where ID=@ID", con);

Вы можете попробовать поместить и закрыть соединение вне цикла foreach, чтобы вам не приходилось делать это каждый раз.

2) Удалите лишний пробел в строке подключения:

con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\mayur patil\\My Documents\\Dairy_db\\tblCompany.mdb";

Кроме того, в вашем операторе удаления есть неопределенное значение i.Это должен быть параметр?

1 голос
/ 19 мая 2011

Для ваших 2 задач:

  1. Удалите круглые скобки после вашего ключевого слова SET.

  2. Эта ошибка указывает на проблему со строкой подключения. У вас есть дополнительное место в вашем Data Source. Это было Data^^Source.

Предложите переместить .mdb в путь к файлу без пробелов.

string conn = @"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB\tblCompany.mdb";
0 голосов
/ 19 мая 2011
  1. Первый запрос не нуждается в скобках внутри запроса.Заменить на

    UPDATE tblCompany_1 SET CoCode=@CoCode, CoName_mar=@CoName_mar where ID=@ID 
    
  2. Запрос на удаление: Что такое i?Если вы определили это, вы можете сделать что-то вроде этого:

    "DELETE FROM tblCompany WHERE (CoCode = " + i + ")"
    

    Хотя использование параметров было бы лучше.

...