C# 将数据集插入Oracle表

C# 将数据集插入Oracle表,c#,oracle,insert,dataset,C#,Oracle,Insert,Dataset,我正在尝试将数据表中的所有记录插入到oracle表中。我已经知道如何插入一条记录,但是如何插入多条记录。这里最大的问题是dataset中的列顺序与oracle表中的列顺序不匹配 下面是我用来插入单个记录的代码: OdbcCommand cmd = new OdbcCommand(); try { cmd.Connection = getDBConnection(); //This calls another method that just gets the co

我正在尝试将数据表中的所有记录插入到oracle表中。我已经知道如何插入一条记录,但是如何插入多条记录。这里最大的问题是dataset中的列顺序与oracle表中的列顺序不匹配

下面是我用来插入单个记录的代码:

OdbcCommand cmd = new OdbcCommand();
    try
    {
        cmd.Connection = getDBConnection(); //This calls another method that just gets the connection to database
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO MY_INSERT_TEST(NAME) VALUES(\'Test 1\')";
        cmd.ExecuteNonQuery();
        cmd.Connection.Close();
        cmd.Dispose();
    }
    catch
    {
        cmd.Connection.Close();
        cmd.Dispose();
    }

那么我如何修改它们来添加数据集中的所有记录呢?

假设您想循环一组行,并插入所有行,那么我将尝试使用这样的伪代码

string cmdText = "INSERT INTO MY_INSERT_TEST(Col1, Col2, Col3) VALUES(?, ?, ?)";
using(OdbcConnection cn = getDBConnection())
using(OdbcCommand cmd = new OdbcCommand(cmdText, cn))
{
    cn.Open();
    cmd.Parameters.AddWithValue("@p1", "");
    cmd.Parameters.AddWithValue("@p2", "");
    cmd.Parameters.AddWithValue("@p3", "");
    foreach(DataRow r in dt.Rows)
    {
         cmd.Parameters["@p1"].Value =  r["Column3"].ToString());
         cmd.Parameters["@p2"].Value =  r["Column1"].ToString());
         cmd.Parameters["@p3"].Value =  r["Column2"].ToString());
         cmd.ExecuteNonQuery();
    }
}

构建一个参数化查询,在这里定义参数是字符串类型的所有参数,需要进行检查,然后在数据表的行上循环,从相应的列中分配参数值。请注意,在命令文本中,您没有直接写入值,而是在循环中为要提供的实际值放置了一个占位符。

为什么要使用OdbcConnection而不是OracleConnection Microsoft或Oracle提供程序?为什么这很重要?如果在INSERT:INSERT中命名列,则列的顺序无关紧要进入myTableCol3,Col1,Col2值'value for Col3','value for Col1','value for Col2'谢谢,我想这就是我要找的。你需要测试这段代码,我这里没有Oracle数据库,正如我所说,这是一段伪代码,只是为了展示一个可能的解决方案