使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5781字,纯文字阅读大概需要9分钟。
内容图文
![使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)](/upload/InfoBanner/zyjiaocheng/503/4357e96e2a9e42859ef224b04b8ab482.jpg)
2,创建连接并查询
/** * 通过jsbc获取数据 * @param driver driver * @param url 数据库url * @param username 用户名 * @param password 密码 * @param sql sql语句 * @param sqlType 语句类型 ,1:查询语句,2:创建语句 * @param columnConnt 查询语句返回列的个数 * @return List */ public static List<Map<String, String>> getJdbcData(String driver, String url, String username, String password, String sql, int sqlType, int columnConnt){ Connection con = null; Statement st = null; ResultSet rs = null; List<Map<String, String>> result = new ArrayList<>(); try { //1.加载oracle数据库驱动 Class.forName(driver); //2.获取数据库连接 con = DriverManager.getConnection(url, username, password); //3.获取执行sql语句的平台 st = con.createStatement(); //4.执行sql语句获取结果集 // 查询 if(sqlType == 1){ rs = st.executeQuery(sql); //5.循环获取结果集数据 int i = 1; while(rs.next()){ if(i <= columnConnt){ Map<String, String> resultMap = new HashMap<>(columnConnt); for (int j = 0; j < columnConnt; j++) { resultMap.put("column" + (j + 1) + "", rs.getString(j + 1)); } result.add(resultMap); } } }else{ // 创建 int rss = st.executeUpdate(sql); Map<String, String> resultMap = new HashMap<>(columnConnt); resultMap.put("column" + 1 + "", rss + ""); result.add(resultMap); } return result; } catch (ClassNotFoundException e) { e.printStackTrace(); Map<String, String> resultMap = new HashMap<>(columnConnt); resultMap.put("column1", "-1"); result.add(resultMap); } catch (SQLException e) { e.printStackTrace(); Map<String, String> resultMap = new HashMap<>(columnConnt); resultMap.put("column1", "-1"); result.add(resultMap); }finally{ //关闭rs if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } //关闭st if(st != null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } //关闭con if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } return result; } // return result; }
3,设置参数
/** * 查询指定数据库中指定表的字段信息 * @param databaseType 数据库类型: 1:mysql、2:oracle、3:sql server、4:gp * @param databaseName 数据库名称 * @param databaseIp 数据库ip * @param databasePort 数据库端口 * @param databaseUserName 数据库用户名 * @param databaseUserPassword 数据库用户的密码 * @param tableName 表名 * @return*/ public static List<Map<String, String>> getColumnInfoByTableName(int databaseType, String databaseName, String databaseIp, String databasePort, String databaseUserName, String databaseUserPassword, String tableName){ String sql = ""; if (Constant.DATABASE_TYPE_MYSQL == databaseType){ //mysql sql = "SELECT column_name, data_type,(case when data_type = ‘int‘ or data_type = ‘float‘ or data_type = ‘double‘ or data_type = ‘decimal‘ then NUMERIC_PRECISION else CHARACTER_MAXIMUM_LENGTH end ) as data_length,\n" + "(case when IS_NULLABLE = ‘NO‘ then 0 else 1 end)as data_Null,(case when COLUMN_KEY=‘PRI‘ then 1 else 0 end) as data_IsPK\n" + " FROM information_schema.COLUMNS WHERE table_schema = ‘"+databaseName+"‘ and table_name = ‘"+tableName+"‘"; }else if (Constant.DATABASE_TYPE_ORACLE == databaseType){ //oracle sql = "SELECT column_name, data_type, data_length, NULLABLE,(case when column_name=(select col.column_name \n" + "from user_constraints con, user_cons_columns col \n" + "where con.constraint_name = col.constraint_name \n" + "and con.constraint_type=‘P‘ \n" + "and col.table_name = "+tableName+"\n" + ") then 1 else 0 end) as IsPK\n" + " FROM all_tab_cols\n" + " WHERE table_name = ‘"+tableName+"‘ "; }else if (Constant.DATABASE_TYPE_SQL_SERVER == databaseType){ //sql server sql = "SELECT C.name as column_name, T.name as data_type, COLUMNPROPERTY(C.id,C.name,‘PRECISION‘) as data_length, \n" + "convert(bit,case when exists(SELECT 1 FROM sysobjects where xtype=‘PK‘ and parent_obj=c.id and name in (\n" + " SELECT name FROM sysindexes WHERE indid in(\n" + " SELECT indid FROM sysindexkeys WHERE id = c.id AND colid=c.colid))) then 1 else 0 end) \n" + " as data_IsPK, convert(bit,C.IsNullable) as data_Null\n" + "FROM syscolumns C INNER JOIN systypes T ON C.xusertype = T.xusertype \n" + "inner join sysobjects d on a.id=d.id and d.xtype=‘U‘ and d.name<>‘dtproperties‘ \n" + "where T.name is not null\n" + "and d.name=‘"+tableName+"‘"; }else if (Constant.DATABASE_TYPE_GP == databaseType){ //gp } List<Map<String, String>> columnNameList = JdbcUtil.getJdbcData(SingletonHoldResource.getInstance().getDictMap(Constant.DB_DRIVER).get(Integer.toString(databaseType)), getTestDbUrl(databaseType, databaseIp, databasePort, databaseName), databaseUserName, databaseUserPassword, sql, 1, 5); //结果中的对应关系:column1 -- name; column2 -- type; column3 -- length; column4 -- IsNull; column5 -- isPk; return columnNameList; }
使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)
标签:mat .exe post creat 通过 字段名 取数据 ret print
本文系统来源:https://www.cnblogs.com/cailijuan/p/9964259.html
内容总结
以上是互联网集市为您收集整理的使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)全部内容,希望文章能够帮你解决使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。