Access查询表名和字段名
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
访问ACCESS数据库我使用的是Oledb方式来访问的。代码如下:sqlConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new
Object[]{null,null,null,"Table"});
此代码返回的即是该数据库中所有的数据表清单,返回值为DataTable,你可以以此为数据源绑定到DataGrid中,来查看其内部数据结构。来具体获取自己所需要内容。
其中sqlConn是一个已经打开的OleDB数据连接的实例。
sqlConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,new Object[]{null,null,strTableName,null});
此代码返回的是指定数据表中的数据列的清单,返回值为DataTable,你可以将此绑定到DataGrid中,来查看其内部数据结构,来获取自己所需的具体内容。
其中sqlConn是一个已经打开的OleDB数据连接的实例。参数strTableName是指定的数据表名称。
获取所有表
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)
{
case2: dgv.Rows[i].Cells["dgv_Lx"].Value = "int"; break;
case3: dgv.Rows[i].Cells["dgv_Lx"].Value = "int"; break;
case4: dgv.Rows[i].Cells["dgv_Lx"].Value = "Single"; break;
case5: dgv.Rows[i].Cells["dgv_Lx"].Value = "double"; break;
case6: dgv.Rows[i].Cells["dgv_Lx"].Value = "decimal"; break;
case7: dgv.Rows[i].Cells["dgv_Lx"].Value = "DateTime"; break;
case11: dgv.Rows[i].Cells["dgv_Lx"].Value = "bool"; break;
case17: dgv.Rows[i].Cells["dgv_Lx"].Value = "byte"; break;
case72: dgv.Rows[i].Cells["dgv_Lx"].Value = "string"; break;
case130: dgv.Rows[i].Cells["dgv_Lx"].Value = "string"; break;
case131: dgv.Rows[i].Cells["dgv_Lx"].Value = "decimal"; break;
case128: 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())
{