无效的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();
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();
我在您的查询中发现两个问题
- 和其他两个答案一样,并没有空格。您需要添加空格
- 在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);
这将在一行中打印出您的命令,这样您就可以看到您在语法中出现的错误。