请问我下面这个段关于2维数组的代码那里错了?(我的目的是把查询出来的记录先保存到数组然后再插入到另外一个表中)
sql_select="select xh,xm,xqmc,lybh,fh,sj_cb,kdf,blf from fygl_kdblf where jfbz='0'";
sql_select=sql_select+strserch+"  order by sj_sf desc";
OleDbCommand cmd3=new OleDbCommand(sql_select,PubF.cn);
OleDbDataReader dt3=cmd3.ExecuteReader();
ArrayList al = new ArrayList();
while(dt3.Read())
{
al.Add(new string[]{count.ToString(),dt3[1].ToString()});
al.Add(new string[]{count.ToString(),dt3[2].ToString()});
al.Add(new string[]{count.ToString(),dt3[3].ToString()});
al.Add(new string[]{count.ToString(),dt3[4].ToString()});
al.Add(new string[]{count.ToString(),dt3[5].ToString()});
al.Add(new string[]{count.ToString(),dt3[6].ToString()});
al.Add(new string[]{count.ToString(),dt3[7].ToString()});
count=count+1;
}
dt3.Close();for(int i=0;i<count;i++)
{
xh=PubF.GetSystemNumber("fygl_jflsb","xh");
sql_insert="insert into fygl_jflsb(xh,id,xm,xqmc,lybh,fh,sj_cb,kdf,blf,bs) values('"+xh+"',"+"'"+al[i,0]+"','"+al[i,1]+"',"+al[i,2]+"','"+al[i,3]+"','"+al[i,4]+"',to_date('"+al[i,5]+"','yyyy-mm-dd'),"+"to_number('"+al[i,6]+"'),to_number('"+al[i,7]+"'),'3')";
PubF.ExSQL(sql_insert);
}
这里运行后报错说:
c:\inetpub\wwwroot\wygl\fygl\jf.aspx.cs(217): 重载“this”方法未获取“2”参数
说明:在sql_inset语句里的al[i,0]报错说未获取“2”参数

解决方案 »

  1.   

    string sql_select = "select xh,xm,xqmc,lybh,fh,sj_cb,kdf,blf from fygl_kdblf where jfbz='0'";
            string sql_select = sql_select + strserch + "  order by sj_sf desc";
            OleDbCommand cmd3 = new OleDbCommand(sql_select, PubF.cn);
            OleDbDataReader dt3 = cmd3.ExecuteReader();
            ArrayList al = new ArrayList();
            while (dt3.Read())
            {
                al.Add(new string[] { dt3[0].ToString(),
                    dt3[1].ToString() ,
                    dt3[2].ToString() ,
                    dt3[3].ToString() ,
                    dt3[4].ToString() ,
                    dt3[5].ToString() ,
                    dt3[6].ToString() });
               
            }
            dt3.Close();        for (int i = 0; i < al.Count; i++)
            {
                xh = PubF.GetSystemNumber("fygl_jflsb", "xh");
                string[] tmp = (string[])al[i];
                string sql_insert = "insert into fygl_jflsb(xh,id,xm,xqmc,lybh,fh,sj_cb,kdf,blf,bs) values('" + xh + "'," + "'" + al[i, 0] + "','" + tmp[0] + "'," + tmp[1] + "','" + tmp[2] + "','" + tmp[3] + "',to_date('" + tmp[4] + "','yyyy-mm-dd')," + "to_number('" + tmp[5] + "'),to_number('" + tmp[6] + "'),'3')";
                PubF.ExSQL(sql_insert);
            }
      

  2.   

    你的写法将在arraylist里面添加count*7个一维数组,所以你的写法是错的
    而且你的循环仅添加了7个值,而后面的取数的循环却要取8个值
      

  3.   

    修正楼上的代码string sql_select = "select xh,xm,xqmc,lybh,fh,sj_cb,kdf,blf from fygl_kdblf where jfbz='0'";
            string sql_select = sql_select + strserch + "  order by sj_sf desc";
            OleDbCommand cmd3 = new OleDbCommand(sql_select, PubF.cn);
            OleDbDataReader dt3 = cmd3.ExecuteReader();
            ArrayList al = new ArrayList();
            while (dt3.Read())
            {
                al.Add(new string[] { dt3[0].ToString(),
                    dt3[1].ToString() ,
                    dt3[2].ToString() ,
                    dt3[3].ToString() ,
                    dt3[4].ToString() ,
                    dt3[5].ToString() ,
                    dt3[6].ToString() ,
                    dt3[7].ToString() });
               
            }
            dt3.Close();        for (int i = 0; i < al.Count; i++)
            {
                xh = PubF.GetSystemNumber("fygl_jflsb", "xh");
                string[] tmp = (string[])al[i];
                sql_insert="insert into fygl_jflsb(xh,id,xm,xqmc,lybh,fh,sj_cb,kdf,blf,bs) values('"+xh+"',"+"'"+tmp[0]+"','"+tmp[1]+"',"+tmp[2]+"','"+tmp[3]+"','"+tmp[4]+"',to_date('"+tmp[5]+"','yyyy-mm-dd'),"+"to_number('"+tmp[6]+"'),to_number('"+tmp[7]+"'),'3')";
                PubF.ExSQL(sql_insert);
            }