取列名的特定表
回答
您可以通過給定查詢獲取架構信息的OleDb使用SchemaOnly CommandBehavior和GetSchemaTable方法,如下所示:
var conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.mdb";
using (var con = new OleDbConnection(conStr))
{
con.Open();
using (var cmd = new OleDbCommand("select * from Suppliers", con))
using (var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly))
{
var table = reader.GetSchemaTable();
var nameCol = table.Columns["ColumnName"];
foreach (DataRow row in table.Rows)
{
Console.WriteLine(row[nameCol]);
}
}
}
sir其返回列名與小寫像我有columnname = OBJECTID但它是返回objectid – 2015-11-17 11:35:50
此檢索所有表的所有列和視圖
DataTable schemaTable = ((OleDbConnection)jetConnection).GetOleDbSchemaTable(
System.Data.OleDb.OleDbSchemaGuid.Columns,
new object[] { null, null, null, null });
布比的方法的特定表的變體:
public List<string> GetTableColumnNames(string tableName)
{
var conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.mdb";
using (var connection = new OleDbConnection(conStr))
{
connection.Open();
var schemaTable = connection.GetOleDbSchemaTable(
OleDbSchemaGuid.Columns,
new Object[] { null, null, tableName });
if (schemaTable == null)
return null;
var columnOrdinalForName = schemaTable.Columns["COLUMN_NAME"].Ordinal;
return (from DataRow r in schemaTable.Rows select r.ItemArray[columnOrdinalForName].ToString()).ToList();
}
}
當然首先你可能要檢查表中獲取它的列名前確實存在:
public bool TableExists(string tableName)
{
var conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.mdb";
using (var connection = new OleDbConnection(conStr))
{
connection.Open();
var tables = connection.GetSchema("Tables");
var tableExists = false;
for (var i = 0; i < tables.Rows.Count; i++)
{
tableExists = String.Equals(tables.Rows[i][2].ToString(),
tableName,
StringComparison.CurrentCultureIgnoreCase);
if (tableExists)
break;
}
return tableExists;
}
}
我發現這文章,同時試圖構建一個C#應用程序來遷移Access數據庫。我正在遷移的數據庫是具有.accdb擴展名的Access 2007/2010文件。
如果您在具有Memo或Attachment列(在accdb文件中可用)的表上使用此代碼,它將以字符串(wchar)的形式返回這些列的類型。
我已經很難找到有關如何處理這些類型的列多的信息,所以我想提供一個鏈接到文章,幫助我弄清楚如何處理它們:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/d15606f9-f38d-4a1b-8ce3-000c558e79c5
我拿着該線程中的底層示例並將其轉換爲C#。我確實有這個using語句添加到模塊,以避免將所有引用的編輯,以「AccessDao」:
using AccessDao = Microsoft.Office.Interop.Access.Dao;
我道歉,用於定位到一個古老的線程,但我用這個線程爲出發寫我的代碼點,並沒有立即意識到這個問題。
- 1. 獲取特定列的列名稱
- 2. 獲取特定表的列表?
- 3. Python中特定類名稱的列表
- 4. 要從表中獲取具有特定值的列名稱
- 5. 從特定列獲取值列表
- 6. 獲取特定TargetType的樣式列表
- 7. 讀取Excel工作表的特定列
- 8. 獲取特定類型的豆列表
- 9. 從列表中刪除特定名稱
- 10. 使用特定名稱制作列表
- 11. 獲取使用特定網站列的所有列表的名稱
- 12. Excel |獲取特定文本作爲列表的所有列/行名稱
- 13. 查找特定值的列名或表名
- 14. 從特定播放列表中獲取特定歌曲
- 15. 迭代特定列的表列表
- 16. 使用Rails獲取特定表的所有表名和行數?
- 17. 獲取具有使用XPath的特定名稱以特定字符串開頭的元素的列表
- 18. 使用ZQL或類似的SQL解析器獲取特定列的表名
- 19. 在特定表名中獲取索引名稱
- 20. 如何從特定目錄中獲取具有特定擴展名的所有文件的列表?
- 21. 使用msforeachtable獲取特定數據庫的表的列表
- 22. 如何從列表中提取特定列到SharePoint中特定員工的另一個列表中
- 23. android:從對象列表中獲取具有特定名稱的對象
- 24. 從數據庫獲取表名,其中包含特定的數據類型列
- 25. 從列表中提取路徑中的特定路徑名和基因R
- 26. 使用javascript從MVC列表中獲取特定的列
- 27. 如何獲取特定列的記錄列表家庭?
- 28. Sharepoint如何獲取Sharepoint特定字段/列的列表
- 29. 從選定的列表中獲取特定對象
- 30. 定義對象列表。獲取對象中的特定字段
您需要提供更多信息。你如何訪問數據庫? – 2010-09-23 02:44:38
@Daniel這是我的連接字符串.. string strConnection =「Provider = Microsoft.Jet.OLEDB.4.0; Data Source =」+ System.Environment.CurrentDirectory +「\\ test.mdb」; – 2010-09-23 02:48:35
你使用'SqlConnection'來訪問數據庫嗎? – 2010-09-23 02:54:16