获得数据库对象信息
来源:互联网 发布:华迈千里眼软件下载 编辑:程序博客网 时间:2024/05/17 02:30
//获得数据表 switch(DBConnForm.DatabaseType) { case DBConnForm.DatabaseTypeTag.SQLServer: tables = DBCommand.QueryStrs("select name from sysobjects where xtype='U' order by name"); break; case DBConnForm.DatabaseTypeTag.MySQL: tables = ValuesToStrings(DBCommand.QueryValues_MySQL("SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='" + database + "' AND TABLE_TYPE='base table' ORDER BY TABLE_NAME;")); break; }
//获取数据表字段信息public class ColumnInfo { public string DataType { get; set; } public string ColumnName { get; set; } public bool IsNullable { get; set; } public bool Auto_Increment { get; set; } //COLUMN_COMMENT public string Comment { get; set; } public bool IsPrimaryKey { get; set; } } public interface IDbHelper { List<ColumnInfo> GetDBColumns(string DatabaseName, string TableName); string GetTableComment(string DatabaseName, string TableName); string GetRepositoryDBBaseExtension(); } public class MySQLDbHelper : IDbHelper { public List<ColumnInfo> GetDBColumns(string DatabaseName, string TableName) { var sql= string.Format(@"SELECT COLUMN_NAME,IS_NULLABLE,DATA_TYPE,COLUMN_COMMENT,COLUMN_KEY,EXTRA FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA='{0}' AND TABLE_NAME='{1}' ORDER BY ORDINAL_POSITION;", DatabaseName, TableName); List<ColumnInfo> Columns = new List<ColumnInfo>(); DBComm.DBCommand.QuerySomeMySQL(sql, dr => { while (dr.Read()) { var col = new ColumnInfo() { ColumnName = Convert.ToString(dr.GetValue(0)), IsNullable = Convert.ToString(dr.GetValue(1)).ToLower() == "yes", DataType = Convert.ToString(dr.GetValue(2)), Comment = Convert.ToString(dr.GetValue(3)), IsPrimaryKey = Convert.ToString(dr.GetValue(4)).ToUpper() == "PRI", Auto_Increment= Convert.ToString(dr.GetValue(5)).ToLower() == "auto_increment", }; Columns.Add(col); Columns[Columns.Count - 1].DataType = Common.ColumnInfo.DBTypeToSystemType(col.DataType, col.IsNullable); } }); return Columns; } public string GetRepositoryDBBaseExtension() { return "RepositoryMySQLBaseExtension"; } public string GetTableComment(string DatabaseName, string TableName) { return Convert.ToString(DBComm.DBCommand.QueryValue_MySQL(string.Format(@"select TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='{0}' AND TABLE_NAME='{1}';", DatabaseName, TableName))); } } public class SQLServerDBHelper : IDbHelper { public List<ColumnInfo> GetDBColumns(string DatabaseName, string TableName) { var sql = @" select col.name as ColumnName, col.isnullable as IsNullable, tp.name as DataType, ep.value as Descript, ( select count(*) from sys.sysobjects where parent_obj=obj.id and name=( select top 1 name from sys.sysindexes ind inner join sys.sysindexkeys indkey on ind.indid=indkey.indid and indkey.colid=col.colid and indkey.id=obj.id where ind.id=obj.id and ind.name like 'PK_%' ) ) as IsPrimaryKey ,COLUMNPROPERTY(col.id,col.name,'IsIdentity') as IsIdentity from sys.sysobjects obj inner join sys.syscolumns col on obj.id = col.id left join sys.systypes tp on col.xtype=tp.xusertype left join sys.extended_properties ep on ep.major_id=obj.id and ep.minor_id=col.colid and ep.name='MS_Description'" + string.Format(" where obj.name=\'{0}\'", TableName); List<ColumnInfo> Columns = new List<ColumnInfo>(); DBComm.DBCommand.QuerySome(sql, sr => { while(sr.Read()) { ColumnInfo cinfo = new ColumnInfo() { ColumnName = sr.GetString(0), IsNullable = Convert.ToInt32(sr.GetValue(1)) == 0, DataType = sr.GetString(2), Comment = Convert.ToString(sr.GetValue(3)), IsPrimaryKey = Convert.ToInt32(sr.GetValue(4)) == 0, Auto_Increment = Convert.ToInt32(sr.GetValue(5)) == 1 }; Columns.Add(cinfo); Columns[Columns.Count - 1].DataType = Common.ColumnInfo.DBTypeToSystemType(cinfo.DataType, cinfo.IsNullable); } return null; }); return Columns; } public string GetRepositoryDBBaseExtension() { return "RepositoryMSSQLBaseExtension"; } public string GetTableComment(string DatabaseName, string TableName) { return DBComm.DBCommand.QueryStr(@"select isnull(g.[value],'') AS 说明 from sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where a.name='" + TableName + "' order by a.name"); } } public static class DBHelperFactory { public static IDbHelper GetInstance(DBConnForm.DatabaseTypeTag tag) { IDbHelper dbhelper = null; switch (DBConnForm.DatabaseType) { case DBConnForm.DatabaseTypeTag.MySQL: dbhelper = new MySQLDbHelper(); break; case DBConnForm.DatabaseTypeTag.SQLServer: dbhelper = new SQLServerDBHelper(); break; } return dbhelper; } }
1 0
- 获得数据库对象信息
- 使用dbms_meadata.get_ddl获得oracle数据库对象DDL信息
- 通过DatabaseMetaData对象获得数据库元数据信息
- 使用DataBaseMetaData对象获得有关数据库管理系统的各种信息
- 3.4 获得数据库和表的信息
- mysql获得数据库和表的信息
- Oracle获得数据库对象DDL语句
- java中利用反射获得对象的各种信息
- 通过反射查看类信息---获得Class对象
- Java中通过反射获得对象的属性信息
- Java中通过反射获得对象的属性信息
- [转]用sql获得Oracle数据库版本信息
- java获得数据库信息常用API(DatabaseMetaData)示例
- java获得数据库信息常用API(DatabaseMetaData)示例
- java获得数据库信息常用API(DatabaseMetaData)示例
- java获得数据库信息常用API(DatabaseMetaData)示例
- MySQL实用工具,如何连接到MySQL,获得数据库中的信息
- SQL Server数据库对象信息的获取
- Spring学习之配置Bean几种不同的方式
- Flash与DIV的层叠顺序问题
- table
- Productflavors 多渠道打包
- ubuntu 16.04安装并激活pycharm2016
- 获得数据库对象信息
- 特征值和特征向量的几何意义、计算及其性质(转载)
- js之转移符和对象参数的传输
- 解决Bootstrap模态框切换时页面抖动 or页面滚动条
- JDK中annotation包下的类
- OpenGL 的渲染流水线
- db2中instr和locate
- Java关键知识点 - JDK HashMap工作原理分析
- 2016.11.23添加自定义导航栏左按钮