![](/img/trans.png)
[英]Reading content from MS Access db using ADO.net and trying to insert the values into a SQL Server table
[英]reading Ms Access using Ado.net
我正在用C#閱讀數據庫(Ms Access)。 我正在使用Ado.net進行連接。 該數據庫有很多表(大約100個),每個表都有大約50列和500行。 每個字段都包含不同的數據類型(整數,字符串,布爾值)。 我需要做的是將選定的表和字段轉換為二進制格式。
經過一些文獻調查之后,我計划使用“ DataReader”讀取數據,因為我只需要讀取二進制轉換的變量即可。
我的問題是
在C#編程方面,我的數據結構應該是什么? 說如果我為所有表創建單獨的類並定義成員變量和方法,那么如何使它更有效? 因為我已經提到有100個表和50個字段,所以實際上我不需要選擇所有字段(我只需要選擇所需的字段)。 我不想像這樣硬編碼(例如)
SELECT BusinessEntityID, LoginID, NationalIDNumber from table1Name
因為我必須遍歷代碼中提到的所選表和所選字段。 由於我對SQL有點陌生,請您提供一些提示嗎? 換句話說,如果我問這個問題,如何使用表和字段變量使選擇查詢有效(如果此問題有任何錯誤,請更正我)
更新資料
如您所描述的那樣,由於擁有大量字段(100 x 50 = 5000),因此首先使用OleDb
讀取SchemaTable
可能會很有用:
清單1. Get SchemaTable(可選)
static DataTable GetSchemaTable(string connectionString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
DataTable schemaTable =
connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] { null, null, null, "TABLE" });
return schemaTable;
}
}
清單2.從MS Access數據庫表讀取數據
下面顯示了從MS Access數據庫表讀取數據並使用DataAdapter
OleDb
對象在DataSet
填充DataTable
的實際過程(該過程原本封裝在我的自定義DB操作類中,如語法所示,因此可以根據需要進行修改) :
#region DataSet, DataAdapter, DataTable
internal DataSet dataSet;
internal OleDbDataAdapter dataAdapter;
internal DataTable dataTable;
private OleDbConnection connection;
#endregion
internal GetData(string SelectQuery, string ConnectionString)
{
try
{
#region Create Data Objects: Connection, DataAdapter, DataSet, DataTable
// use OleDb Connection to MS Access DB
connection = new OleDbConnection(ConnectionString);
connection.Open();
// create new DataAdapter on OleDb Connection and Select Query text
dataAdapter = new OleDbDataAdapter();
dataAdapter.SelectCommand = new OleDbCommand(SelectQuery, connection);
// create DataSet
dataSet = new DataSet();
// retrieve TableSchema
// DataTable[] _dataTablesSchema = _dataAdapter.FillSchema(_dataSet, SchemaType.Source, "{TABLE NAME}");
DataTable[] _dataTablesSchema = dataAdapter.FillSchema(dataSet, SchemaType.Source);
// there is only one Table in DataSet, so use 0-index
dataTable = _dataTablesSchema[0];
// use DataAdapter to Fill Dataset
dataAdapter.Fill(dataTable);
// OPTIONAL: use OleDbCommandBuilder to build a complete set of CRUD commands
OleDbCommandBuilder builder = new OleDbCommandBuilder(dataAdapter);
// Update, Insert and Delete Commands
dataAdapter.UpdateCommand = builder.GetUpdateCommand();
dataAdapter.InsertCommand = builder.GetInsertCommand();
dataAdapter.DeleteCommand = builder.GetDeleteCommand();
#endregion
connection.Close();
}
catch {throw; }
}
有關更多詳細信息,請參見MSDN上的文章:鏈接http://msdn.microsoft.com/zh-cn/library/system.data.oledb.oledbconnection.getoledbschematable.aspx
注意 :第一步(清單1)是可選的。 這兩個過程均基於OleDb
對象,以在MS Access DB上進行操作。 對於其他數據庫類型(例如MS SQL Server),有不同的對象集(例如SQLConnection
等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.