当我运行以下代码时,我得到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();
答案 0 :(得分:3)
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 :(得分: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);
这将在一行打印出您的命令,以便您可以看到语法中出现错误的位置。
答案 2 :(得分:1)
如果我错了,请纠正我,但我认为你的字符串中必须有空格,否则它们只能作为没有空格的大字汇集在一起。
尝试:
"MAXID NUMBER " +
"MAXID=1175 " +
"SELECT GROUP_ID INTO MAXID FROM GROUPS "+
"MAXID:=MAXID+1 " +
等