向Oracle表中插入数据集
本文关键字:插入 数据集 Oracle | 更新日期: 2023-09-27 18:18:58
我试图从我的数据表插入所有的记录到oracle表。我已经弄清楚如何插入单个记录,但是我如何去插入多个记录。这里最大的问题是数据集的列顺序与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();
}
}
构建一个参数化查询,定义参数(这里是所有字符串类型的参数,需要检查),然后循环遍历数据表的行,从相应的列分配参数值。注意,在命令文本中,您没有直接写入值,而是为您将在循环中提供的实际值放置了一个占位符。