using (OleDbConnection conn1 = new OleDbConnection(conn_str)) { int[] a = new int[result1]; a = Gen_Num(284,result1); int[] b = new int[result3]; b = Gen_Num(284, result3); conn1.Open(); OleDbDataAdapter sda = new OleDbDataAdapter("select*from tb_TorF", conn1); DataSet ds= new DataSet(); sda.Fill(ds); for (int i = 0; i < result1; i++){ string qchap = ds.Tables[0].Rows[a[i]-1]["qchap"].ToString(); string qhard = ds.Tables[0].Rows[a[i]-1]["qhard"].ToString(); string qold = ds.Tables[0].Rows[a[i]-1]["qold"].ToString(); string qcontent = ds.Tables[0].Rows[a[i]-1]["qcontent"].ToString(); string qans = ds.Tables[0].Rows[a[i]-1]["qans"].ToString(); OleDbCommand cmd1 = new OleDbCommand( string.Format( @"insert into ku (`qchap`,`qhard`,`qold`,`qcontent`,`qans`,`tx`) values({0},{1},{2},'{3}','{4}',{5})", qchap, qhard, qold,qcontent, qans, 1), conn1); cmd1.ExecuteNonQuery(); }
请高手指点一下,这段代码有什么问题吗?为什么写入表格的数据有时候数量正常,有时候又不对呢?测试了一下,如果写入的不是dataset的内容,输出的数量就是对的,似乎是dataset的部分有问题
问题不该是数字,字符问题。你贴下具体的错误信息呢?有可能是你的索引越界~
情况是这样的,如果我把qcontent的values改成数值的话,就完全没有问题,但是如果是文本的话,就会偶尔出现写入数据库的数量变少的情况。但是出现问题的时候,报错指向了result1这个值的获取
@小菜刚: 没看到具体的错误信息,不太好分析,如你所说,文本过长也有可能出现错误。
其他:看你的需求,应该是两个表之间复制,将tb_ForF表中的数据复制到ku中,按照这种需求,你大可以发送一条sql语句即可,如
insert into ku select * from tb_ForF where id in (...)
@幻天芒: 说得对,我刚刚也发现了,是我在数据库里设置的字段不够长的原因,谢谢你~
values 的参数如果不是数字会有问题。
貌似的确是这样的,qcontent里面我穿的是文本,那请问有什么修改的方法吗?