insert into Details select * from workTable这句是在你的数据库中有"workTable"这张表的时候才有用。因为sql语句是对应数据库表格的。
你必须逐个循环取出临时表格中的值,然后插入foreach (TableRow r in workTable.Rows)
{
// 这里逐个读然后插入
}

解决方案 »

  1.   

    一条条构造SQL语句吧,workTable可不是数据库中的表
      

  2.   

    OrdId, ProId, ProName, ProSpecs 一共4个列SqlCommand cmd=new SqlCommand("insert into Details values (@OrdId, @ProId, @ProName, @ProSpecs",MyConnection);
    SqlParameter[] para = new SqlParameters[4];
    para.Initiate();
    // 这里要给para逐个设定属性
    para[0].ParameterName = "@OrdId";
    para[0].DbType = SqlDbType.VarChar;
    para[1].ParameterName = "@ProId";
    para[1].DbType = SqlDbType.VarChar;
    para[2].ParameterName = "@ProName";
    para[2].DbType = SqlDbType.VarChar;
    para[3].ParameterName = "@ProSpecs";
    para[3].DbType = SqlDbType.VarChar;
    // 加入para
    cmd.Parameters.Add(para[0]);
    cmd.Parameters.Add(para[1]);
    cmd.Parameters.Add(para[2]);
    cmd.Parameters.Add(para[3]);
    // 赋值,执行
    MyConnection.Open();
    foreach (TableRow r in workTable.Rows)
    {
    // 这里逐个读然后插入
    cmd.Parameters[0].Value = r.Item["OrdId"].ToString();
    cmd.Parameters[1].Value = r.Item["ProId"].ToString();
    cmd.Parameters[2].Value = r.Item["ProName"].ToString();
    cmd.Parameters[3].Value = r.Item["ProSpecs"].ToString();
    // 执行
    cmd.ExecuteNonQuery();
    }
    MyConnection.Close();
    MyConnection.Dispose();
      

  3.   

    首先,感谢您的回复!可是,workTable这张表的数据提交要与另外两张数据库基本表的的两条记录的提交要在一个事务内完成;所以说,您所说的方法似乎有些不妥。您觉得呢?