获取所有表
string connnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Xtxx.db.dbwz;
OleDbConnection connection = new OleDbConnection(connnectionString);
connection.Open();
DataTable table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow row in table.Rows)
{
TreeNode treeNode = new TreeNode();
treeNode.Tag = "数据表";
treeNode.Text = row["TABLE_NAME"].ToString();
tvSjk.SelectedNode.Nodes.Add(treeNode);
}
connection.Close();
获取数据表详细信息
string connnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Xtxx.db.dbwz;
OleDbConnection connection = new OleDbConnection(connnectionString);
connection.Open();
DataTable table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, sjbmc, null });
int i = 0;
dgv.Rows.Clear();
foreach (DataRow row in table.Rows)
{
dgv.Rows.Add(1);
dgv.Rows[i].Cells["dgv_Mc"].Value = row["COLUMN_NAME"].ToString(); //字段名称
int lx = int.Parse(row["DATA_TYPE"].ToString()); //字段类型
switch (lx)
{
case 2: dgv.Rows[i].Cells["dgv_Lx"].Value = "int"; break;
case 3: dgv.Rows[i].Cells["dgv_Lx"].Value = "int"; break;
case 4: dgv.Rows[i].Cells["dgv_Lx"].Value = "Single"; break;
case 5: dgv.Rows[i].Cells["dgv_Lx"].Value = "double"; break;
case 6: dgv.Rows[i].Cells["dgv_Lx"].Value = "decimal"; break;
case 7: dgv.Rows[i].Cells["dgv_Lx"].Value = "DateTime"; break;
case 11: dgv.Rows[i].Cells["dgv_Lx"].Value = "bool"; break;
case 17: dgv.Rows[i].Cells["dgv_Lx"].Value = "byte"; break;
case 72: dgv.Rows[i].Cells["dgv_Lx"].Value = "string"; break;
case 130: dgv.Rows[i].Cells["dgv_Lx"].Value = "string"; break;
case 131: dgv.Rows[i].Cells["dgv_Lx"].Value = "decimal"; break;
case 128: dgv.Rows[i].Cells["dgv_Lx"].Value = "string"; break;
default: dgv.Rows[i].Cells["dgv_Lx"].Value = "string"; break;
}
dgv.Rows[i].Cells["dgv_Lx"].Tag = dgv.Rows[i].Cells["dgv_Lx"].Value.ToString();
dgv.Rows[i].Cells["dgv_Yxk"].Value = bool.Parse(row["IS_NULLABLE"].ToString()); //允许空
dgv.Rows[i].Cells["dgv_Ms"].Value = row["DESCRIPTION"].ToString(); //字段说明、描述
dgv.Rows[i].Cells["dgv_Zj"].Value = false;
i++;
}
table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null); //主键
foreach (DataRow row in table.Rows)
{
if (sjbmc == row["TABLE_NAME"].ToString())
{
for (int j = 0; j < dgv.RowCount; j++)
{
if (dgv.Rows[j].Cells["dgv_mc"].Value.ToString() == row["COLUMN_NAME"].ToString())
{
dgv.Rows[j].Cells["dgv_Zj"].Value = true; //主键
}
}
}
}
connection.Close();
没有实现获取字段编号列,那位有获取自动编号列的的方法,请留言告诉我。谢谢!
参考的资料:
使用 DataReader GetSchemaTable 方法和 Visual C# .NET 检索列架构
http://support.microsoft.com/kb/309681/zh-cn
http://support.microsoft.com/kb/310107/zh-CN
GetOleDbSchemaTable DATA_TYPE AutoNumber
http://social.msdn.microsoft.com/Forums/zh-CN/adodotnetdataproviders/thread/eb845da8-6e15-41a9-8be7-
.NET获取ACCESS自动编号列的一种方法(转)
3e84ae3e1fechttp://www.cnblogs.com/aion111/archive/2010/07/16/1778956.html (这篇中获取自动编号列的方法视乎有问题)
浙公网安备 33010602011771号