比如:
for (int i=0;i<10;i++)
{
//此处循环把i的值写进datatable
}//此处把datatable里存的10条数据全部写进SQL数据库(10行)
//此处清空datatable

解决方案 »

  1.   

    datarow o = datatable.newrow();
    o["column1"] = "";
    o["column2"] = "";
    datatable.rows.add(o);
    然后用再用DataAdapter来提交..其实可以不用这样做.我觉得你循环的时候拼好10条Sql语句,然后一次给数据库,可能会更好一点..
      

  2.   

    哈,其实你已经把算法都写好了..
    for (int i=0;i<10;i++)
    {
    datarow o = datatable.newrow();
    o["column1"] = "";
    o["column2"] = "";
    datatable.rows.add(o);
    //此处循环把i的值写进datatable
    //建议在此拼SQL语句..
    }
    提交..首先你的DataTable应有数据库的相关相信..
      

  3.   

    感谢 我想我已经成功的写进DATATABLE了
    再麻烦请教下怎么把DATATABLE的数据写进数据库呢?最后在清空DATATABLE
      

  4.   

    提交的.
    using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.UpdateCommand = new SqlCommand();
                    adapter.UpdateCommand.Connection = connection;
                    adapter.Update(DataTable);
                }
      

  5.   

    我试了这个方法  成功了  但是数据库里没有数据
    我数据库的表名、结构、字段名和DataTable都一样的
      

  6.   

    //以下是完整的代码 帮忙看看错误在哪里?编译能通过  但数据库没有被更新strconnection=@"server=127.0.0.1;database=OA;uid=sa;pwd=123321";
    SqlConnection MyConn = new SqlConnection(strconnection);
    MyConn.Open();
    SqlDataReader dr=MyCMD.ExecuteReader();
    dr.Read();
    DataTable dt = new DataTable("HistoryTemp");
    dt.Columns.Add("History",typeof(String));
    while ((line=sr.ReadLine()) != null)    //循环把文本文件里的数据读入DataTable
    {
    DataRow ADR = dt.NewRow();
    ADR["History"]=line;
    dt.Rows.Add(ADR);}
    SqlDataAdapter da = new SqlDataAdapter();
    da.UpdateCommand = new SqlCommand();
    da.UpdateCommand.Connection=MyConn;
    da.Update(dt);
      

  7.   

    strconnection=@"server=127.0.0.1;database=OA;uid=sa;pwd=123321";
    SqlConnection MyConn = new SqlConnection(strconnection);
    MyConn.Open();
    SqlDataReader dr=MyCMD.ExecuteReader();
    dr.Read();
    DataTable dt = new DataTable("HistoryTemp");
    dt.Columns.Add("History",typeof(String));
    while ((line=sr.ReadLine()) != null) //循环把文本文件里的数据读入DataTable
    {
    DataRow ADR = dt.NewRow();
    ADR["History"]=line;
    ADR.RowState = DataRowState.Added; ///////////////////////////////新添加的
    dt.Rows.Add(ADR);}
    SqlDataAdapter da = new SqlDataAdapter();
    da.UpdateCommand = new SqlCommand();
    da.UpdateCommand.Connection=MyConn;
    da.Update(dt);
      

  8.   

    如果还是不行,把最后一行改成:
    da.Update(dt.Select(null, null, DataViewRowState.Added));
    试下..其实我也没有那样子做过.我遇到那样的应用会比较少:)
      

  9.   

    在最后加上 dt.AcceptChanges();试试。
      

  10.   

    参考一下:
    如何使用 Visual C# 2005 或 Visual C# .NET 通过 DataSet 对象更新数据库
    http://support.microsoft.com/kb/307587/
      

  11.   

    已经能确定datatable里有数据
    就是不能写进SQL
      

  12.   

    大家好,对不起大家了,都是我在误导大家了...刚上网查了一下.微软工程师推荐的做法是用:SqlBulkCopy类,我尝试了一下,的确可行.对不起楼主了,浪费了你那么多时间.我们的代码改为:
    strconnection=@"server=127.0.0.1;database=OA;uid=sa;pwd=123321";
    SqlConnection MyConn = new SqlConnection(strconnection);DataTable dt = new DataTable("HistoryTemp");
    dt.Columns.Add("History",typeof(String));SqlDataReader dr = MyCMD.ExecuteReader();
    dr.Read();
    while ((line=sr.ReadLine()) != null) //循环把文本文件里的数据读入DataTable
    {
        DataRow ADR = dt.NewRow();
        ADR["History"] = line;
        dt.Rows.Add(ADR);
    }
    //SqlDataAdapter da = new SqlDataAdapter();
    //da.UpdateCommand = new SqlCommand();
    //da.UpdateCommand.Connection=MyConn;
    //da.Update(dt);MyConn.Open();
    using (SqlBulkCopy oBC = new SqlBulkCopy(oConn))
    {
        oBC.DestinationTableName = "HistoryTemp";
        oBC.WriteToServer(dt);
    }
    MyConn.Close();关于SqlBulkConpy的更多用法,查阅MSDN就好了..实在对不住了..
      

  13.   

    DataSet只不过是DataTable的集合罢了...
      

  14.   


    SqlDataAdapter da = new SqlDataAdapter("select 。。",MyConn);//读取表结构
    SqlCommandBuilder builder = new SqlCommandBuilder(da);
    DataSet ds = new DataSet();
    da.Fill(ds,"HistoryTemp");
    DataTable dt = new DataTable();
    dt=ds.Tables["HistoryTemp"];
    while ((line=sr.ReadLine()) != null)
    {

    // 循环 

    }
    da.Update(ds,"HistoryTemp");以上方法绝对可行