2012-10-16 1 views
0

Как-то я не могу понять, что происходит с командой, которую я использую. В основном я хочу, чтобы вставить данные в файл EXCEL следующим образом:Странное поведение при запуске команды INSERT (C# и XLSX)

string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=scriptsdb.xlsx;Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=Yes;\""; 
OleDbConnection objConn = new OleDbConnection(ConnectionString); 
string sSQLQuery = "INSERT INTO [Plan1$] ([ID], [NAME], [DESCRIPTION], [SQL_CODE]) VALUES ('" + NextID + "','" + txtbxName.Text + "','" + txtbxDescription.Text + "','" + txtboxSQL.Text + "')"; 
OleDbCommand cmd = new OleDbCommand(sSQLQuery, objConn); 
objConn.Open(); 
cmd.ExecuteNonQuery(); 

Теперь проверить его. Иногда он работает (запись добавляется), и иногда я получаю сообщение об ошибке (Операция должна использовать обновляемый запрос).

Как бы странно это ни звучало, я просто получаю сообщение об ошибке, когда поля «Текст» имеют только одно слово. например: «ТЕСТ». Как только я меняю его на «TEST ONE», он отлично работает. Если я попытаюсь сохранить его двумя словами с самого начала, это сработает.

Любая идея, что я могу делать неправильно?

Спасибо!

+0

ИЗМЕНИТЬ разрешения на папку, в которой находится файл excel. – MMK

+0

Проверьте ответ, надеюсь, это поможет вам. – MMK

ответ

0

Примечание: изменение INSERT INTO [Plan1 $] для INSERT INTO [Sheet1 $].

Рабочий код.

class Program 
     { 
      static void Main(string[] args) 
      { 
      string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+"C:\\Users\\123\\Desktop\\plan1.xlsx;"+"Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=Yes\";"; 
      // here you can use your text box or from 
      // where ever you access the data to be inserted 
      // into the that Excel file sheet 

      string selectString = "INSERT INTO [Sheet1$] ([ID], [NAME], [DESCRIPTION], [SQL_CODE]) VALUES ('1','maziz','Not working','selectfrom you')"; 

      OleDbConnection con = new OleDbConnection(connectionString); 
      OleDbCommand cmd = new OleDbCommand(selectString, con); 

      try 
      { 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       Console.WriteLine("Successfully inserted the records"); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
      finally 
      { 
       con.Close(); 
       con.Dispose(); 
      } 
      Console.ReadLine(); 
      } 
     } 
+0

Спасибо MMK! Это сработало! –

+0

приветствуется, что это помогло. – MMK

Смежные вопросы