小弟刚刚学OleDb的连接方式,以前一直是SqlClient方式.
现遇到一个问题,调用的存储过程最后返回一个查询纪录,之前有一条insert语句,在查询分析器中一切正常,可是用SqlAdapter返回结果到datatable上却为空,一旦把那条insert语句柱石掉,就没了问题,请问是怎么回事?附上我的程序:
OleDbDataAdapter adp = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "usp_IPIInvPickup";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;OleDbParameter paraUser = new OleDbParameter("@User", OleDbType.VarWChar, 50);
paraUser.Value = User;
cmd.Parameters.Add(paraUser);adp.SelectCommand = cmd;
adp.Fill(dt);存储过程主要为:
insert into IPI_SYSTEM values(14,1700000,14,'','',0,'','','','',8,1000000,14,0,'','',NULL, '2005/1/1',10,'510100200,214171581')select InvNo, CONumber from IPI_FS_INVOICE_COMBINE_TEMP where [User] = @User
group by InvNo, CONumber
order by InvNo麻烦大家帮忙看看,谢谢.
现遇到一个问题,调用的存储过程最后返回一个查询纪录,之前有一条insert语句,在查询分析器中一切正常,可是用SqlAdapter返回结果到datatable上却为空,一旦把那条insert语句柱石掉,就没了问题,请问是怎么回事?附上我的程序:
OleDbDataAdapter adp = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "usp_IPIInvPickup";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;OleDbParameter paraUser = new OleDbParameter("@User", OleDbType.VarWChar, 50);
paraUser.Value = User;
cmd.Parameters.Add(paraUser);adp.SelectCommand = cmd;
adp.Fill(dt);存储过程主要为:
insert into IPI_SYSTEM values(14,1700000,14,'','',0,'','','','',8,1000000,14,0,'','',NULL, '2005/1/1',10,'510100200,214171581')select InvNo, CONumber from IPI_FS_INVOICE_COMBINE_TEMP where [User] = @User
group by InvNo, CONumber
order by InvNo麻烦大家帮忙看看,谢谢.
解决方案 »
- 如何修改assembly: AssemblyCompany的默认值
- 使用代码修改修改DataGridView控件的单元格内容的问题。
- 线程池操作出现进程占用的问题
- 问个基本问题Microsoft ADO Ext. 2.7 for DDL and Security怎么引用?我找不到引用的地方
- Winform中的计时窗口
- 跨列Excel导入数据库
- 有谁知道怎么看.netframework类库里函数原代码吗?[重要]
- 为什么用C#编写richtextbox字体样式和字体大小随下拉框中comboBox的值变化不起作用
- 关于FlowLayoutPanel中控件更新的问题
- web treeview的闪烁和选择节点打开窗口的问题
- 如何用c#完成网络语音传送
- 怎样结束这个实例
当然设了,呵呵.
啊?我不知道啊,不可以么?
我都是在存储过程中做的啊,最后返回一个结果集,难道之前不能做其他操作么?
你换成SqlDataAdapter试试,看行吗?
之前用SqlClient连接方式时,用SqlDataAdapter接受结果,没有问题,现在改成了OleDb方式,换成OleDbDataAdapter为什么就不行了呢?
谢谢帮忙!
请问什么叫返回行的成批查询啊?刚才又试了一下,注释掉存储过程中的insert行,在select语句前面加上了下面这一小段测试的垃圾行
declare @hehe int
set @hehe = 1结果一切正常?到底是什么原因啊?或者该如何写?
这么晚了,谢谢大家.
SET OrderID = ?, ProductID = ?, Quantity = ?, UnitPrice = ?
WHERE OrderID = ? AND ProductID = ? AND TSCol = ?;
SELECT TSCol FROM [Order Details] WHERE OrderID = ? AND ProductID = ?但是注意:不是所有的数据库都支持返回行的成批查询
insert into IPI_SYSTEM values(14,1700000,14,'','',0,'','','','',8,1000000,14,0,'','',NULL, '2005/1/1',10,'510100200,214171581')
set nocount on
select InvNo, CONumber from IPI_FS_INVOICE_COMBINE_TEMP where [User] = @User
group by InvNo, CONumber
order by InvNo试试看
既然是Sql server,为什么要用OleDb?用SqlClient怎么不好了?
加了set nocount on,依然没用。to chengbo1983(努力学习.Net!(asp.net C#)) ,
主要是数据库里有中文的拉丁字符,用SqlClient的话没法转换,而用OleDb方式可以在定义连接串时设置Auto Translate=False来将乱字符转换成正确的中文。
如下SqlConnection nwindConn = new SqlConnection("user id=sa;password=haha;initial catalog=mydb;data source=myserver;Auto Translate=false;Connect Timeout=30;");
试过了不行的,只有OleDb支持Auto Translate的设置.