在c#错误中MySql alter table

时间:2014-04-10 10:59:10

标签: c# mysql

我正在尝试执行

ALTER TABLE
我的应用程序中的

命令,但在运行时,我收到此错误

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(10) NOT NULL' at line 1

这是我的代码:

for (int k = 0; k < dlzkaTab; k++)
{
 string query1 = "ALTER TABLE reflextime ADD " + atributes[k] + " VARCHAR(10) NOT NULL";
 MySqlCommand cmd = new MySqlCommand(query1, conect);
 cmd.ExecuteScalar();
 }

有人可以帮助我吗?

编辑:

这是完整的代码。在第一个for循环中,我正在从xls文件中读取第一行,我将它放入数组属性中。如您所见,我试图打印出每个加载的单元格。它运作良好(它打印正确的值)。但是在这个for循环之后,数组没有打印任何内容(空消息框)。

  for (int j = 2; j < colCount; j++)
  {
   string atr = xlRange.Cells[1, j].Text;
   atributes[j]=atr;
   MessageBox.Show(atributes[j]);
  }

 MessageBox.Show("Súbor načítaný");

 int dlzkaTab = atributes.Length;

 MessageBox.Show(atributes[1]);  //empty messagebox

 for (int k = 0; k < dlzkaTab; k++)
 {
 string query1 = "ALTER TABLE reflextime ADD COLUMN " + atributes[k] + " VARCHAR(10) NOT NULL";
 MySqlCommand cmd = new MySqlCommand(query1, conect);
 cmd.ExecuteScalar();

 } 

2 个答案:

答案 0 :(得分:2)

我认为您正在尝试add列中的一列。

您在添加的列名之前的语句中错过了COLUMN关键字。

"ALTER TABLE reflextime ADD COLUMN " + atributes[k] + " VARCHAR(10) NOT NULL"

答案 1 :(得分:1)

您需要使用 ExecuteNonQuery 而不是 ExecuteScalar

并检查你的每个 atributes [k] 值是否存在

试试这个

 for (int k = 0; k < dlzkaTab; k++)
 {
 string query1 = "ALTER TABLE reflextime ADD " + atributes[k] + " VARCHAR(10) NOT NULL";
 MySqlCommand cmd = new MySqlCommand(query1, conect);
 cmd.ExecuteNonQuery();
 }