c#操作oracle数据库,ExecuteReader()

我想把一张表table1里,按照某一列(actdatetime)的值的大小顺序排列,然后把另表table2中一列(busindex)按照对应table1表里的produc... 我想把一张表table1里,按照某一列(actdatetime)的值的大小顺序排列,然后把另表table2中一列(busindex)按照对应table1表里的productid这列进行标号由小到大1-n;代码如下:
OracleTransaction myTrans2 = conn.BeginTransaction();
OracleCommand cmd2 = conn.CreateCommand();
cmd2.Transaction = myTrans2;
cmd2.CommandText = "Select * From table1 Order By to_char(actdatetime,'yyyy-mm-dd hh24:mi:ss')";//按照这张表内actdatetime这列大小升序排列
OracleDataReader rs1 = cmd2.ExecuteReader();
int length = 0;
while (rs1.Read())
{
length ++;
}
int i = 1;//我用这个办法获得select所作用的行数
for (rs1.Read(); (i - 1) <= length; i++)//我按对read()的理解这么写的,想每次读一行
{
string issueDetail = rs1.IsDBNull(0) ? "" : rs1.GetValue (4).ToString ();//判断是否表中第5列值为0
cmd2.CommandText = "update table2 set BUSINDEX = '" + i.ToString() + "' where productid = '" + issueDetail + "'";//sql语句,对busindex这列进行编号,按照product这列。
cmd2.ExecuteNonQuery();
myTrans2.Commit();
}
rs1.Close();
运行结果:没有可取的行或者列。length我看过是对的,sql语句在数据库里运行过也能得到正确的结果.table1第列是number(10,0)类型,想用getvalue。这段代码求帮忙改改,真心谢谢了!
展开
 我来答
阳光的雷咩咩
推荐于2016-09-09 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7805万
展开全部
  1. 贴出相关表结构和示例数据,以便讨论

  2. 为什么要用Transaction

  3. 说说你的思路

更多追问追答
追问

1.

表1 2结构一致,前5列如图

要给表2中更新的busindex是varchar(20)类型。

2.我初学,update,insert都用事务了..要commit()嘛。

3.想先吧表一升序排序,并进行select,再用datareader进行一行行读。

在for循环里,每得到一个表一里id值,就通过语句update由相应的id,对表二busindex这列进行从1-n的编号。

追答
  1. 上面你说按照actdatetime排列,可是图中好像没看到

  2. “按照对应table1表里的productid这列进行标号由小到大1-n”,“通过语句update由相应的id,对表二busindex这列进行从1-n的编号”,都是什么意思,

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式