无效的SQL语句

本文关键字:语句 SQL 无效 | 更新日期: 2023-09-27 17:59:18

当我运行以下代码时,我得到以下error:

无效的SQL语句。

OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider=MSDAORA;Data Source=data;
        Password=fatemeh;User ID=personnel_temp";
string sqlcommand = "MAXID NUMBER" +
                    "MAXID=1175" +
                    "SELECT GROUP_ID INTO MAXID FROM GROUPS"+
                    "MAXID:=MAXID+1" +
                    "INSERT INTO GROUPS(GROUP_ID, GROUP_NAME,DEPT_ID)
                    VALUES(MAXID,"
                    + textBox1.Text + 
                   ", SELECT DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT INNER 
   JOIN SHIFTS_N.GROUPS ON DEPARTMENT.DEPARTMENT_ID=GROUPS.DEPT_ID)";
                 OleDbDataAdapter oda = new OleDbDataAdapter(sqlcommand,con);
 con.Open();
 oda.Fill(dt);
 con.Close();

无效的SQL语句

    OleDbConnection con = new OleDbConnection();
     con.ConnectionString = "Provider=MSDAORA;Data Source=data;
     Password=fatemeh;User ID=personnel_temp";
     con.Open();
     string sqlcommand = "SELECT MAX(GROUP_ID) FROM GROUPS";
     OleDbCommand command = new OleDbCommand(sqlcommand, con);
     Int32 MAXID = (Int32) command.ExecuteScalar();
     MAXID++;
      sqlcommand = "INSERT INTO GROUPS(GROUP_ID, GROUP_NAME,DEPT_ID) "+
                        "VALUES("+MAXID+",'"
                        + textBox1.Text + 
                       "', SELECT DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT WHERE "
 +"DEPARTMENT_NAME='"+COMBOBOX1.TEXT()+"')";
  command = new OleDbCommand(sqlcommand, con);
  command.ExecuteNonQuery();
      // OleDbDataAdapter oda = new OleDbDataAdapter(sqlcommand,con);
    // oda.Fill(dt);
     con.Close();

我在您的查询中发现两个问题

  1. 和其他两个答案一样,并没有空格。您需要添加空格
  2. 在insert语句中,您正在插入一个字符串。应包含在'

如果我错了,请纠正我,但我认为字符串中必须有空格,否则它们只是作为没有空格的大单词连接在一起。

尝试:

"MAXID NUMBER " + "MAXID=1175 " + "SELECT GROUP_ID INTO MAXID FROM GROUPS "+ "MAXID:=MAXID+1 " +

等等。

当前您的查询如下所示:

"MAXID NUMBERMAXID=1175SELECT GROUP_ID INTO MAXID FROM GROUPSMAXID:=MAXID+1..."

主要的问题是,你需要做的是在每行的开头或结尾添加空格;并且您需要用'包围从文本框输入的字符串;像这样:

"MAXID NUMBER " +
"MAXID=1175 " +
"SELECT GROUP_ID INTO MAXID FROM GROUPS "+
"MAXID:=MAXID+1 " +
"INSERT INTO GROUPS(GROUP_ID, GROUP_NAME,DEPT_ID)
VALUES(MAXID, '"
+ textBox1.Text + 
"', SELECT DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT INNER JOIN SHIFTS_N.GROUPS ON DEPARTMENT.DEPARTMENT_ID=GROUPS.DEPT_ID)";

一个好的做法是先在一行上键入所有内容,然后将其拆分为其他行。

当你执行命令时,有一件事你想看看可能出了什么问题,如果你正在运行控制台应用程序,你可以写命令到控制台:

Console.Writeline(sqlcommand);

或者,如果您正在使用winforms(或类似的)应用程序,则显示一个Messagebox:

MessageBox.Show(sqlcommand);

这将在一行中打印出您的命令,这样您就可以看到您在语法中出现的错误。