C#通过Oracle.ManagedDataAccess批量插入数据完整例子
时间: 2024-01-02 09:04:32 浏览: 238
下面是一个使用Oracle.ManagedDataAccess批量插入数据的完整例子:
```csharp
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace OracleBulkInsertExample
{
class Program
{
static void Main(string[] args)
{
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=hr;Password=hr;";
// 构建数据表和数据集
DataTable employeesTable = new DataTable();
employeesTable.Columns.Add("ID", typeof(int));
employeesTable.Columns.Add("NAME", typeof(string));
employeesTable.Columns.Add("AGE", typeof(int));
employeesTable.Columns.Add("SALARY", typeof(double));
employeesTable.Rows.Add(1, "John Smith", 35, 5000.50);
employeesTable.Rows.Add(2, "Mary Johnson", 28, 4000.75);
employeesTable.Rows.Add(3, "Peter Lee", 42, 7000.25);
employeesTable.Rows.Add(4, "Kim Chen", 31, 5500.00);
DataSet employeesDataSet = new DataSet();
employeesDataSet.Tables.Add(employeesTable);
// 使用批量插入将数据插入到数据库中
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = new OracleCommand("INSERT INTO EMPLOYEES(ID, NAME, AGE, SALARY) VALUES(:ID, :NAME, :AGE, :SALARY)", connection);
command.ArrayBindCount = employeesTable.Rows.Count;
command.Parameters.Add(":ID", OracleDbType.Int32, employeesTable.AsEnumerable().Select(r => r.Field<int>("ID")).ToArray(), ParameterDirection.Input);
command.Parameters.Add(":NAME", OracleDbType.Varchar2, employeesTable.AsEnumerable().Select(r => r.Field<string>("NAME")).ToArray(), ParameterDirection.Input);
command.Parameters.Add(":AGE", OracleDbType.Int32, employeesTable.AsEnumerable().Select(r => r.Field<int>("AGE")).ToArray(), ParameterDirection.Input);
command.Parameters.Add(":SALARY", OracleDbType.Double, employeesTable.AsEnumerable().Select(r => r.Field<double>("SALARY")).ToArray(), ParameterDirection.Input);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} rows inserted.");
}
Console.ReadLine();
}
}
}
```
在上面的例子中,我们首先创建了一个包含员工信息的数据表和数据集。然后,我们使用Oracle.ManagedDataAccess客户端连接到Oracle数据库,并使用批量插入将数据插入到数据库中。
请注意,我们使用OracleCommand的ArrayBindCount属性指定要插入的行数,然后使用参数化查询和数组绑定技术将数据传递给INSERT语句。
最后,我们输出插入的行数,然后关闭数据库连接。
阅读全文