c# 获取Access 表名称和字段
来源:互联网 发布:邮箱注册知乎怎么登陆 编辑:程序博客网 时间:2024/05/16 09:19
最近自己做一个 小型的管理系统,在建立实体类的时候发现有很多重复的工作需要做。于是考虑是否可以写个小的代码生成器。
拿 access 数据库做测试。其中下面是用于获取 表名称 和 表的字段的代码。
/// <summary>
/// 数据库管理接口。 如 获取表的架构等
/// </summary>
public interface IDataBaseEx
{
bool OpenDB();
bool CloseDB();
List<TableInfo> GetTables();
List<FieldInfo> GetFields(TableInfo tableInfo);
}
Access 访问类
public class AccessDBEx:IDataBaseEx
{
CommonLog cLog = CommonLog.Instance();
private string connStr = null; //连接字符串
private OleDbConnection Con;
public AccessDBEx(string connString)
{
connStr = connString;
Con = new OleDbConnection(connString);
}
/// <summary>
/// 连接数据库
/// </summary>
/// <returns></returns>
public bool OpenDB()
{
try
{
if (Con.State == ConnectionState.Open)
return true;
Con.Open();
if (Con.State == ConnectionState.Open)
return true;
return false;
}
catch (Exception ex)
{
cLog.WriteLog(LogType.LogType_Exception,ex.Message);
return false;
}
finally
{
}
}
/// <summary>
/// 关闭数据库
/// </summary>
/// <returns></returns>
public bool CloseDB()
{
if (Con.State == ConnectionState.Open)
Con.Close();
return true;
}
/// <summary>
/// 获取所有表
/// </summary>
/// <returns></returns>
public List<TableInfo> GetTables() {
if (Con.State != ConnectionState.Open)
{
if (!OpenDB())
return null;
}
DataTable table = Con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
List<TableInfo> tableInfoList=new List<TableInfo>();
foreach (DataRow row in table.Rows)
{
TableInfo tableInfoItem=new TableInfo();
tableInfoItem.TableName=row["TABLE_NAME"].ToString();
tableInfoList.Add(tableInfoItem);
}
CloseDB();
return tableInfoList;
}
/// <summary>
/// 获取Access 数据库中某个表的字段信息
/// </summary>
/// <param name="tableInfo"></param>
/// <returns></returns>
public List<FieldInfo> GetFields(TableInfo tableInfo)
{
if (Con.State != ConnectionState.Open)
{
if (!OpenDB())
return null;
}
DataTable table = Con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new Object[] { null, null, tableInfo.TableName, null });
List<FieldInfo> fieldInfoList=new List<FieldInfo>();
for (int j = 0; j < table.Rows.Count; j++)
{
FieldInfo fieldInfo=new FieldInfo();
fieldInfo.FieldName=table.Rows[j]["COLUMN_NAME"].ToString();
int lx = int.Parse(table.Rows[j]["DATA_TYPE"].ToString()); //字段类型
switch (lx)
{
case 2: fieldInfo.FieldType = "int"; break;
case 3: fieldInfo.FieldType = "int"; break;
case 4: fieldInfo.FieldType = "Single"; break;
case 5: fieldInfo.FieldType = "double"; break;
case 6: fieldInfo.FieldType = "decimal"; break;
case 7: fieldInfo.FieldType = "DateTime"; break;
case 11: fieldInfo.FieldType = "bool"; break;
case 17: fieldInfo.FieldType = "byte"; break;
case 72: fieldInfo.FieldType = "string"; break;
case 130: fieldInfo.FieldType = "string"; break;
case 131: fieldInfo.FieldType = "decimal"; break;
case 128: fieldInfo.FieldType = "string"; break;
default: fieldInfo.FieldType = "string"; break;
}
fieldInfoList.Add(fieldInfo);
}
table = Con.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null); //主键
foreach (DataRow row in table.Rows)
{
if (row["TABLE_NAME"].ToString() == tableInfo.TableName)
{
foreach(FieldInfo item in fieldInfoList)
{
if (item.FieldName == row["COLUMN_NAME"].ToString())
{
item.IsPrimaryKey = true;
}
}
}
}
CloseDB();
return fieldInfoList;
}
}
独立博客地址: http://www.gddhx.com/post/41.html
- c# 获取Access 表名称和字段
- C# access 获取所有表名和字段名
- 保存Excel文件、获取表的名称——Visual C#读取Excel和Access数据库
- 获取SqlServer和Access中的表名等对象名称
- oracle&sqlserver获取表名称和字段类型
- 获取access所有表和字段,不引用ADOX
- 获取access所有表和字段,不引用ADOX
- c# 获取access所有表名 获取指定表所有字段名
- c# 获取access所有表名 获取指定表所有字段名
- c#获取实例的各个字段名称及值
- 读取Access数据库、获取Access表信息——Visual C#读取Excel和Access数据库
- C#获得Access数据库中的表名,以及根据表名获取字段名
- 获取数据名称、表名、字段名、字段类型
- c# 获取桌面图标的位置和名称
- 用SQL语句获取MSSQL表关键字段的名称、数据类型和长度
- Oracle表名称和字段名称区分大小写
- C#获取SQLServer数据库表名和字段名
- Access无法使用time作为字段名称
- UART驱动,从驱动原理到实际驱动
- 学习php安全和防注入
- 并查集-朋友问题
- 三层架构与MVC
- apns服务器介绍
- c# 获取Access 表名称和字段
- Linux 下串口编程入门
- 正则表达式学习笔记
- 如何POST一个JSON格式的数据给Restful服务
- 定义一个结构体变量stu,成员包括学号,姓名,性别,成绩。
- 工作队列
- Linux Vi 常用命令
- 建立一个简单的链表,它由三个学生数据的结点组成输出各节点中的数据。
- 从云端盗取数据