查询获取所有数据库名及数据库中表的集合、数据库连接字符串(类生成器,暂时支持mysql,sql server,后期有oracle再更新)

现所在公司做项目开发时,经常会自己创建model类,网上的生成器也很多,完全满足自己的不太现实,所以感觉自己做一个更有底气,主要针对过程中的一些语句进行整理,也供其他人学习参考。

连接字符串:

mysql:  

    string conn = string.Format("Server={0};database={1};Persist Security Info=True;User ID={2};Password={3}", address, dbname, user, pwd);    //也可以通过public static string str=""直接确定连接的数据库

sql server:

    string conn = string.Format("Server={0};Database={1};integrated security=true;Trusted_Connection=SSPI;uid={2};pwd={3}", address, dbname, user, pwd);   //也可以通过public static string str=""直接确定连接的数据库

 

mysql:

    sql = "SHOW DATABASES";      //获取所有数据库(语句1)

    sql="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA";          //获取所有数据库(语句2)

    

    sql = "SELECT * FROM information_schema.TABLES WHERE table_schema='" + 数据库名(变量)+ "'";    //获取数据库的表集合

 

    sql = "SELECT * FROM information_schema.columns WHERE TABLE_NAME='" + 表名(变量)+ "' AND TABLE_SCHEMA='" + 数据库名(变量)+ "'";      //获取数据库下表的所有字段集合、注释及字段类型

sql server:

    sql = "SELECT * FROM sys.databases where database_id >4";    //这大于4为了排除系统数据库,我这为了仅获取自己创建的数据库

    sql = "SELECT * FROM sysobjects WHERE type='U'";    //获取数据库对应的表。这里要注意下,因为获取表要连接到具体的数据库,所以这个只是作为一个变量传递 ,传到执行函数中ExecuteQuery_SQLserver(sql, address, dbname, user, pwd);就可以了

 

    sql = "select a.name,b.name as typename,g.value from syscolumns a left join systypes b on a.xusertype=b.xusertype ";

    sql += "inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' ";
    sql += "left join syscomments e on a.cdefault=e.id ";
    sql += "left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id ";
    sql += "left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0 where d.name='" + 表名称(变量)+ "'";

  //上面这个是获取表字段、注释及类型(这个比较麻烦点,可以分开在数据库里面执行,看查出来的是什么表,就懂了)

 

 

  以上基本上就是类生成器对数据库的一些语句操作,期待纠正。可以留言探讨。谢谢!

 

posted @ 2016-09-28 10:00  三年树木,五年树人  阅读(407)  评论(0编辑  收藏  举报