1 Вопрос: C # .net не может вставить запись в базу данных MS доступа

вопрос создан в Thu, May 2, 2019 12:00 AM

Когда я пытаюсь вставить запись в базу данных ms access. Я получил ошибку, которую я прикрепил ниже:

  

Необработанное исключение типа 'System.Data.Odbc.OdbcException' произошло в System.Data.dll

     

Дополнительная информация: ОШИБКА [IM002] [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

OdbcConnection con = new OdbcConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:/school.accdb;");
OdbcCommand cmd;

string name,course,fee;
name = txtname.Text;
course = txtcourse.Text;
fee = txtfee.Text;

sql = "insert into record(name,course,fee)values(?,?,?)";           
cmd = new OdbcCommand(sql, con);
con.Open();
cmd.Parameters.AddWithValue("name", name);
cmd.Parameters.AddWithValue("course", course);
cmd.Parameters.AddWithValue("fee", fee);

cmd.ExecuteNonQuery();
MessageBox.Show("Record adddedddd");
txtname.Clear();
txtcourse.Clear();
txtfee.Clear();
txtname.Focus();

con.Close();
    
- 1
  1. Первое, что нужно проверить, это ваш источник данных ... действительно ли он там, где вы говорите, E:/school.accdb - и влияет ли ваше направление "косой черты" на путь ...
    2019-05-02 14: 45: 33Z
  2. так как написать этот сэр
    2019-05-02 14: 46: 41Z
  3. Вы используете драйвер OleDb, но пытаетесь создать OdbcConnection. Измените каждый «Odbc» на «Ole», и ваш код должен работать
    2019-05-02 14: 46: 54Z
  4. большое спасибо, сэр workinggggggggggggggggggggggggg
    2019-05-02 15: 03: 44Z
  5. 1 ответ                              1                         

    Собираем воедино то, что было сказано в комментариях (спасибо @Fenton и @Steve):

    string name = txtname.Text;
    string course = txtcourse.Text;
    string fee = txtfee.Text;
    string sql = "insert into record(name,course,fee) values(?,?,?)";
    
    using (var con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\school.accdb;")) {
        var cmd = new OleDbCommand(sql, con);
        cmd.Parameters.AddWithValue("name", name);
        cmd.Parameters.AddWithValue("course", course);
        cmd.Parameters.AddWithValue("fee", fee);
    
        con.Open();
        int n = cmd.ExecuteNonQuery();
        MessageBox.Show($"{n} Record adddedddd");
    }
    txtname.Clear();
    txtcourse.Clear();
    txtfee.Clear();
    txtname.Focus();
    

    Я также заключил объект соединения в оператор using, чтобы убедиться, что соединение закрывается и удаляется.

    Обратите внимание, что я использовал дословную строку @"..." для строки подключения. Это позволяет мне использовать обратную косую черту для пути. В противном случае C # интерпретирует обратную косую черту как escape.

    См. строки (руководство по программированию в C #) а> р>     

    0
    2019-05-02 15: 06: 47Z
источник размещен Вот