Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#中的错误:处理命令时出现一条或多条错误消息_C#_Oracle - Fatal编程技术网

c#中的错误:处理命令时出现一条或多条错误消息

c#中的错误:处理命令时出现一条或多条错误消息,c#,oracle,C#,Oracle,这是我的代码: OleDbConnection con = new OleDbConnection(); con.ConnectionString = "Provider=MSDAORA;Data Source=data;Password=ss8_pakhsh;User ID=SHIFTS_N"; con.Open(); int MAXID = 1175; MAXID++; string sqlcommand = "INSERT INTO GROUPS(GROUP_ID

这是我的代码:

OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider=MSDAORA;Data Source=data;Password=ss8_pakhsh;User ID=SHIFTS_N";
            con.Open();
int MAXID = 1175;
 MAXID++;
string 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;
 OleDbDataAdapter oda = new OleDbDataAdapter(sqlcommand, con);
            oda.Fill(dt);
            con.Close();
当我运行它时,收到以下错误:

处理命令期间发生一个或多个错误

我认为我的查询有问题,因为当我在TOAD editor(用于oracle)上输入它时,会出现以下错误:

ORA-00936:缺少表达式


当您从另一个表中选择查询时,需要将您的
select
查询放在大括号中,以便将其放在
()
中。另外,
Department\u Name
外观为
type varchar
,因此其值应位于
单引号中。像这样更改您的查询

string 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+"'"));

还可以使用
参数化
查询来防止
sql注入

查询中缺少引号和偏执

为了避免这种情况,应该使用参数化查询,如下所示

string sqlcommand ="INSERT INTO GROUPS(GROUP_ID, GROUP_NAME,DEPT_ID)  
                           VALUES(?,?,SELECT DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT WHERE DEPARTMENT_NAME=?)";
OleDbConnection oledbConnection = new OleDbConnection(con);
OleDbCommand oledbCommand = new OleDbCommand(sqlcommand , oledbConnection);
oledbCommand.Parameters.AddWithValue("?", txtquotationno.Text);
oledbCommand.Parameters.AddWithValue("?", cmbjobcode.Text);
oledbCommand.Parameters.AddWithValue("?", comboBox1.Text);
OleDbDataAdapter oda  = new OleDbDataAdapter(oledbCommand);
DataTable dt= new DataTable();
oda.Fill(dt);

-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入正确的引号可能会导致错误..检查引号字符串。最重要的是SQL注入!我这样做了,但仍然得到了错误发生在oda.Fill(dt)上的错误;