OleDbDataAdapter 插入记录
DataSet 中所作的更改發(fā)回數(shù)據(jù)源。
當 OleDbDataAdapter 填充 DataSet 時,它將為返回的數(shù)據(jù)創(chuàng)建適當?shù)谋砗土?#xff08;如果它們尚不存在)。但是,除非 MissingSchemaAction 屬性設置為 AddWithKey,否則這個隱式創(chuàng)建的架構中不包括主鍵信息。也可以使用 FillSchema,讓 OleDbDataAdapter 創(chuàng)建 DataSet 的架構,并在用數(shù)據(jù)填充它之前就將主鍵信息包括進去。有關更多信息,請參見 向 DataSet 添加現(xiàn)有約束。
請注意,包括 MSDataShape 提供程序在內(nèi)的某些 OLE DB 提供程序并不返回基表或主鍵信息。因此,OleDbDataAdapter 無法對任何已創(chuàng)建的 DataTable 正確設置 PrimaryKey 屬性。在這些情況下,應該為 DataSet 中的表顯式地指定主鍵。
OleDbDataAdapter 還包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 和 TableMappings 屬性,以便于數(shù)據(jù)的加載和更新。
當創(chuàng)建 OleDbDataAdapter 的實例時,屬性都設置為其初始值。有關這些值的列表,請參見 OleDbDataAdapter 構造函數(shù)。
OleDbDataAdapter 充當 DataSet 和數(shù)據(jù)源之間的橋梁,用于檢索和保存數(shù)據(jù)。OleDbDataAdapter 通過以下方法提供這個橋接器:使用 Fill 將數(shù)據(jù)從數(shù)據(jù)源加載到 DataSet 中,并使用 Update 將 DataSet 中所作的更改發(fā)回數(shù)據(jù)源。
當 OleDbDataAdapter 填充 DataSet 時,它將為返回的數(shù)據(jù)創(chuàng)建適當?shù)谋砗土?#xff08;如果它們尚不存在)。但是,除非 MissingSchemaAction 屬性設置為 AddWithKey,否則這個隱式創(chuàng)建的架構中不包括主鍵信息。也可以使用 FillSchema,讓 OleDbDataAdapter 創(chuàng)建 DataSet 的架構,并在用數(shù)據(jù)填充它之前就將主鍵信息包括進去。
請注意,包括 MSDataShape 提供程序在內(nèi)的某些 OLE DB 提供程序并不返回基表或主鍵信息。因此,OleDbDataAdapter 無法對任何已創(chuàng)建的 DataTable 正確設置 PrimaryKey 屬性。在這些情況下,應該為 DataSet 中的表顯式地指定主鍵。
OleDbDataAdapter 還包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 和 TableMappings 屬性,以便于數(shù)據(jù)的加載和更新。
public static OleDbDataAdapter CreateDataAdapter(string selectCommand,
??? OleDbConnection connection)
{
??? OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);
??? adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
??? // Create the Insert, Update and Delete commands.
??? adapter.InsertCommand = new OleDbCommand(
??????? "INSERT INTO Customers (CustomerID, CompanyName) " +
??????? "VALUES (?, ?)");
??? adapter.UpdateCommand = new OleDbCommand(
??????? "UPDATE Customers SET CustomerID = ?, CompanyName = ? " +
??????? "WHERE CustomerID = ?");
??? adapter.DeleteCommand = new OleDbCommand(
??????? "DELETE FROM Customers WHERE CustomerID = ?");
??? // Create the parameters.
??? adapter.InsertCommand.Parameters.Add("@CustomerID",
??????? OleDbType.Char, 5, "CustomerID");
??? adapter.InsertCommand.Parameters.Add("@CompanyName",
??????? OleDbType.VarChar, 40, "CompanyName");
??? adapter.UpdateCommand.Parameters.Add("@CustomerID",
??????? OleDbType.Char, 5, "CustomerID");
??? adapter.UpdateCommand.Parameters.Add("@CompanyName",
??????? OleDbType.VarChar, 40, "CompanyName");
??? adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
??????? OleDbType.Char, 5, "CustomerID").SourceVersion =
??????? DataRowVersion.Original;
??? adapter.DeleteCommand.Parameters.Add("@CustomerID",
??????? OleDbType.Char, 5, "CustomerID").SourceVersion =
??????? DataRowVersion.Original;
??? return adapter;
}
using System;
using System.Data;
using System.Data.OleDb;
class Class1
{
??? static void Main()
??? {
??? }
??? public static OleDbDataAdapter CreateDataAdapter(string selectCommand,
??????? OleDbConnection connection)
??? {
??????? OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);
??????? adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
??????? // Create the Insert, Update and Delete commands.
??????? adapter.InsertCommand = new OleDbCommand(
??????????? "INSERT INTO Customers (CustomerID, CompanyName) " +
??????????? "VALUES (?, ?)");
??????? adapter.UpdateCommand = new OleDbCommand(
??????????? "UPDATE Customers SET CustomerID = ?, CompanyName = ? " +
??????????? "WHERE CustomerID = ?");
??????? adapter.DeleteCommand = new OleDbCommand(
??????????? "DELETE FROM Customers WHERE CustomerID = ?");
??????? // Create the parameters.
??????? adapter.InsertCommand.Parameters.Add("@CustomerID",
??????????? OleDbType.Char, 5, "CustomerID");
??????? adapter.InsertCommand.Parameters.Add("@CompanyName",
??????????? OleDbType.VarChar, 40, "CompanyName");
??????? adapter.UpdateCommand.Parameters.Add("@CustomerID",
??????????? OleDbType.Char, 5, "CustomerID");
??????? adapter.UpdateCommand.Parameters.Add("@CompanyName",
??????????? OleDbType.VarChar, 40, "CompanyName");
??????? adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
??????????? OleDbType.Char, 5, "CustomerID").SourceVersion =
??????????? DataRowVersion.Original;
??????? adapter.DeleteCommand.Parameters.Add("@CustomerID",
??????????? OleDbType.Char, 5, "CustomerID").SourceVersion =
??????????? DataRowVersion.Original;
??????? return adapter;
??? }
總結
以上是生活随笔為你收集整理的OleDbDataAdapter 插入记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS正则表达式使用详解
- 下一篇: 飞鸽传书的基本原则