先贴代码..   private void btnTransmission_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("开始传输?          ", "友情 提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {                DataSet ds = this.ExecuteSql("Select ZCBMCODE, CJCODE, FACTORY, MAPID, PATCH, to_char(ASSEMBLY_DATE, 'YYYY\".\"MM\".\"DD')  From gicom.o_tmepassembly_cj Where ASSEMBLY_DATE > to_date('2009-12-29', 'YYYY-MM-DD')");
                DataTable dt = new DataTable();
                dt = ds.Tables[0];
                ArrayList aList = new ArrayList();
                aList.Add("Insert Into Sys_Barcode(FInteModelID, FUniqueNO, FSupplierID, FAccessoryNO, FBatchNO, FProduceDate) Select ZCMCODE as FInteModelID, CJCODE as FUniqueNO, FACORTY as FSupplierID, MAPID as FAccessoryNO, Patch as FBatchNO, ASSEMBLY_DATE as FProduceDate From " + dt);                sqldata.ExecTran(aList);
            
            }
        }我现在碰到我问题就是..    写入的时候报错..     难道不能 "Insert Into table  From " +  DataTable   ?      我把从Oracle读取出来的数据存入DataTable   这个没有问题..    但是  我现在需要把这些数据写入我自己程序的数据库中!  
程序运行的时候  错误指向这一行(这是我执行SQL语句的方法)..  →   sqldata.ExecTran(aList);   在可视化工具里面看的时候    aList  里面的是这样的..    Insert Into Sys_Barcode(FInteModelID, FUniqueNO, FSupplierID, FAccessoryNO, FBatchNO, FProduceDate) Select ZCMCODE as FInteModelID, CJCODE as FUniqueNO, FACORTY as FSupplierID, MAPID as FAccessoryNO, Patch as FBatchNO, ASSEMBLY_DATE as FProduceDate From Table造成 "用户代码未处理 NullReferenceException"  请教下大家  我要如何去读  从Oracle读取出来存入DataTable的数据集     先谢过!  

解决方案 »

  1.   

    估计是在select是有值为null,在insert是不让插入
      

  2.   

    造成 "用户代码未处理 NullReferenceException"空引用异常,看看啥东西空了
      

  3.   

    DataTable的插入不是那样插得,T-SQL插入是连接模式,DataTable是非连接模式了。
    你要将DataTable的表结构设计好,然后使用dt.Rows集合,最后将你的DataRow逐个加进集合中。
      

  4.   

    每一列都有值!      接口程序   不允许空值的..    造成 "用户代码未处理 NullReferenceException"  的原因 我说的很清楚了..   "Insert Into Sys_Barcode ...   From " + dt   
    这个 dt 的数据没有读取出来! 程序 没有把这里的dt  当成我模拟的table    
      

  5.   

    aList.Add("Insert Into Sys_Barcode(FInteModelID, FUniqueNO, FSupplierID, FAccessoryNO, FBatchNO, FProduceDate) Select ZCMCODE as FInteModelID, CJCODE as FUniqueNO, FACORTY as FSupplierID, MAPID as FAccessoryNO, Patch as FBatchNO, ASSEMBLY_DATE as FProduceDate From " + dt);
    你把一个字符串 和一个DataTable 混搭在一起, 你希望它能做什么                sqldata.ExecTran(aList);
      

  6.   

    我以为 程序能把DataTable  当成一张表..      现在知道不行..      我就是想知道  如何把DataTable里的数据集  插入到我的Sys_Barcode表
      

  7.   

    先insert在Select 可以这么写?
      

  8.   

    使用 SqlBulkCopy http://hi.baidu.com/cyap/blog/item/d1a842f9aae7a15d242df21e.html
      

  9.   

    如果是同一张表的批量更改 可以使用 SqlCommandBuilder 
      

  10.   

    首先你得将查询到的数据集存储到DataTable,然后对datatable进行处理,读取里面的值。
     通过foreach 循环每行,然后获取每列,然后将获取到的值插入到你指定的表中。具体操作如下: foreach(DataRow  row in table.rows)
       {
    row[0].toString() =str;
    sql ="insert into biao  values(str);
    Sqlcommand  com=new SqlCommand(sql,con);
    然后执行
    }
      

  11.   

    感谢  Sandy945    但是  我的表里面 还有   其他列的话    SqlBulkCopy  就会报错.. 10W条/天   的数据量 我没法用循环..       批量插入就是为了避免循环..   
    谢谢大家!