我的代码中出现此错误:在处理命令期间发生了一个或多个错误。 [英] i have this error in my code :One or more errors occurred during processing of command.

查看:100
本文介绍了我的代码中出现此错误:在处理命令期间发生了一个或多个错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 leDbConnection con =  new  OleDbConnection(); 
DataTable dt = new DataTable();
con.ConnectionString = Provider = MSDAORA; Data Source = DATA; Password = ****** ****;用户ID = ********;
con.Open();
string sqlcommand = INSERT INTO GROUPS( GROUP_ID,GROUP_NAME,DEPT_ID) + VALUES(SEQ_MAX_GROUP_ID_NO.NEXTVAL,@ groupName,SELECT DEPT_ID FROM PERSONNEL_TEMP .DEPARTMENT WHERE DEPARTMENT_NAME = @ depName);
OleDbCommand command = new OleDbCommand(sqlcommand,con);
command.Parameters.AddWithValue( @ groupName,textBox1.Text);
command.Parameters.AddWithValue( @ depName,comboBox1.SelectedItem);
OleDbDataAdapter oda = new OleDbDataAdapter(command);
oda.Fill(dt);
dataGridView2.DataSource = dt;
con.Close();

解决方案

问题在于子查询在insert语句中插入DEPT_ID 。你的子查询实际上返回一个无效的表。



从DEPERSONMENT_NAME = @ depName中的PERSONNEL_TEMP.DEPARTMENT选择DEPT_ID



你实际上需要使用top 1.查询应该是这样的:



SELECT top 1 DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT DEPARTMENT_NAME = @ depName

leDbConnection con = new OleDbConnection(); 
DataTable dt = new DataTable(); 
con.ConnectionString = "Provider=MSDAORA;Data Source=DATA;Password=**********;User ID=********"; 
con.Open(); 
string sqlcommand = "INSERT INTO GROUPS(GROUP_ID, GROUP_NAME,DEPT_ID) " + "VALUES(SEQ_MAX_GROUP_ID_NO.NEXTVAL,@groupName, SELECT DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT WHERE DEPARTMENT_NAME=@depName)"; 
OleDbCommand command = new OleDbCommand(sqlcommand, con); 
command.Parameters.AddWithValue("@groupName", textBox1.Text); 
command.Parameters.AddWithValue("@depName", comboBox1.SelectedItem); 
OleDbDataAdapter oda = new OleDbDataAdapter(command); 
oda.Fill(dt); 
dataGridView2.DataSource = dt; 
con.Close();

解决方案

The problem is with the sub query to insert "DEPT_ID" within the insert statement. Your sub query actually returns a table which is not valid.

SELECT DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT WHERE DEPARTMENT_NAME=@depName

You actually need to use top 1. The query should be like this:

SELECT top 1 DEPT_ID FROM PERSONNEL_TEMP.DEPARTMENT WHERE DEPARTMENT_NAME=@depName


这篇关于我的代码中出现此错误:在处理命令期间发生了一个或多个错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆