Мой оператор вставки не работает для Excel в С#

Эй, мое заявление о вставке не работает. Я использовал тот же код для вставки других данных панели, чтобы лист Excel работал отлично, но когда я пытаюсь вставить данные на другой лист, используя вторую панель, выдается исключение «Утверждение вставки INTO недопустимо». "Я проверяю каждую вещь в этом, я не могу найти в нем ни одной ошибки. Я использую OleDb для вставки. Вот тот же код, который я использовал для вставки первой панели.

 private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                String filename1 = @"E:DB\TestDB.xlsx";
                String connection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename1 + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;\"";
                OleDbConnection con = new OleDbConnection(connection);
                con.Open();
                int id = 4;
                string user = txtMUserName.Text.ToString();
                string pass = txtMPassword.Text.ToString();
                string role = txtMRole.Text.ToString();
                DateTime date = DateTime.Now;
                string Date = date.ToString("dd/MM/yyyy");
                //string Time = date.ToLongTimeString();
                string Time = "3:00 AM";
                String Command = "Insert into [Test$] (UserID, UserName, Password, Role, Created_Date,Created_Time) VALUES ('"
                        + id.ToString() + "','"
                        + user + "','"
                        + pass + "','"
                        + role + "','"
                        + Date + "','"
                        + Time + "')";
                OleDbCommand cmd = new OleDbCommand(Command, con);
                cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Success!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

person Muzammil Ahmed    schedule 29.11.2018    source источник
comment
Вот тот же код, который я использовал для первой панели – а что насчет кода, который дает сбой? Пожалуйста, также проверьте, что Excel, который вы используете, действительно одинаковы (листы отсутствуют во втором?).   -  person Markus Deibel    schedule 29.11.2018
comment
Прежде чем приступить к решению проблемы, см. stackoverflow.com/q/332365/11683.   -  person GSerg    schedule 29.11.2018
comment
Добро пожаловать @Muzammil! Две мысли: во-первых, рассмотрите возможность использования IDisposables, таких как соединения с базой данных. Во-вторых, txtMUserName.Text.ToString() можно сократить до txtMUserName.Text.   -  person n8wrl    schedule 29.11.2018


Ответы (1)


Похоже, вы используете зарезервированное имя для столбца Password. вам нужно избежать его с помощью []:

string Command = "Insert into [Test$] (UserID, UserName, [Password], Role, Created_Date,Created_Time) VALUES ('"
                        + id.ToString() + "','"
                        + user + "','"
                        + pass + "','"
                        + role + "','"
                        + Date + "','"
                        + Time + "')";
person Aman B    schedule 29.11.2018