java中访问mysql数据库中的表结构信息
package cn.hncu.meta;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.junit.Test;
import cn.hncu.pool.ConnUtils3;
import cn.hncu.pool.ConnUtils4;
/*
* 要点:
操纵: 数据库驱动的信息、数据库名、数据表信息(名字、个数) ---java.sql.DatabaseMetaData <---通过con.getMetaData()获得
操纵: 表结构信息,如字段名、列数 ---java.sql.ResultSetMetaData <--- 通过rs.getMetaData()获得
*数据库的其它称呼: Catlog,Schema , Database
*/
public class MetaDataDemo {
Connection con = ConnUtils3.getConn();
@Test
public void DatabaseMetaDataDemo() throws Exception{
DatabaseMetaData dm = con.getMetaData();
System.out.println(dm.getDriverName());
System.out.println(dm.getDatabaseMajorVersion()+"."+dm.getDatabaseMinorVersion());
System.out.println(dm.getMaxStatements());
System.out.println(dm.getJDBCMajorVersion());//jdbc4.0
System.out.println("--------------------------");
//返回所有数据库的名字
ResultSet rs = dm.getCatalogs();
while(rs.next()){
String name = rs.getString("TABLE_CAT");
String name2 = rs.getString(1);
System.out.println(name+","+name2);
}
System.out.println("--------------------------");
//返回某个数据库的表名
//参数解析: 第1和第2个都是数据库的名字(2个,是为兼容不同数据库), 第3个参数是查询表名的过滤模式(null为不过滤即查所有,"%a%"为表名中包含字母'a'),最后一个参数是表类型如"TABLE"、"VIEW"等(这些值可查看API中getTableTypes()方法)
rs = dm.getTables("hncu", "hncu", null, new String[]{"TABLE","VIEW"} );
while(rs.next()){
String name = rs.getString("TABLE_NAME"); //字符串参数的具体取值参看API中getTables()
String name2 = rs.getString("TABLE_TYPE");
System.out.println(name+","+name2);
}
System.out.println("--------------------------");
//如果已知数据库的名字,打开该数据库。如果还知道某个表的名字,那么可以操纵这个表
String s1 = "hncu";
con.createStatement().execute("use "+s1);//该方法能够执行所有SQL语句,包括: use hncu; drop database hncu
String s2 = "stud";
ResultSet rs2 = con.createStatement().executeQuery("select * from "+ s2);
while(rs2.next()){
//如果已经列数n,就可输出表格的所有数据
int n = 2;
for(int i=1;i<=n;i++){
Object obj = rs2.getObject(i);
System.out.print(obj+" ");
}
System.out.println();
}
}
@Test //表结构信息
public void ResultSetMetaDataDemo() throws Exception{
//跨库查询
Connection con = ConnUtils4.getConn(); //该版本的配置文件的url中是没有数据库名字的
String dbName = "abc"; //数据库名
String tableName = "stud"; //表名
String sql = "select * from " + dbName+"."+tableName;
ResultSet rs = con.createStatement().executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
//获取当前表格的列数
int columns = rsmd.getColumnCount();
System.out.println("列数:"+columns);
//输出当前表格的表头
System.out.println("------------------");
for(int i=0; i<columns;i++){
System.out.print(rsmd.getColumnName(i+1)+"\t");
}
System.out.println();
System.out.println("------------------");
//输出表数据
while (rs.next()) {
//输出一行
for (int i = 0; i < columns; i++) {
System.out.print(rs.getObject(i + 1) + "\t");
}
System.out.println();
}
}
}
java中访问mysql数据库中的表结构信息的更多相关文章
- JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...
- html页面通过http访问mysql数据库中的内容,实现用户登录的功能
需求: 通过html编写用户登录页面,页面内容包括用户名.密码和登录按钮,点击登录后访问login.php文件,使用按钮默认的submit提交用户名和密码,在login.php中访问mysql数据库, ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
- 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...
- Oracle数据库中实现mysql数据库中auto-increment功能
在Mysql数据库中,想要实现一条数据的自增一功能(即插入此数据时填写null即可,系统自动+1),可直接在所在列使用语句auto-increment. id int primary key auto ...
- Java—JDBC向mysql数据库中给某个表添加数据时,会遇到的问题,如下
解析(jar包该放在那里,以及其它的操作): 把jar包(驱动)添加到自己的项目中,最好新建一个文件夹,再把jar包(驱动包)添加到这个所新建的文件中 1.先建好自己的项目,再新建一个文件夹,如下: ...
- JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...
- django中 对Mysql数据库的建表
Django操作Mysql数据库: 1.1 在settings中,配置数据库相关参数,所以无需修改,这里我们看一下: DATABASES = { 'default': { # 这里可以指定使用的数据库 ...
- 通过java代码往mysql数据库中写入日期相关数据少13个小时
通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...
随机推荐
- PLSQL 连接Oracle11g (64位)
1.用plsql连不上oracle 11g(64位),先去下载一个oracle 11g(32位客户端) http://www.oracle.com/technetwork/database/featu ...
- commons-lang3-3.4.jar
StringUtils 1.StringUtils.isBlank(str); 检查字符串是否为空白(“ ”),为空(“”),为null. * StringUtils.isBlank(null) ...
- ubuntu使用问题与解决记录[持续更新]
1. 添加到计划任务 为脚本增加可执行权限 sudo chmod +x yeelink.sh 将脚本加入cronjob(计划任务) sudo crontab -e 在cornjob文件中添加下面一行, ...
- jackson 注解的使用
在实体对象上添加 @JsonAutoDetect , 表明对该实体对象序列化成json串. @JsonAutoDetect public class User{ private int id; pri ...
- EasyUI样式在IE下无法显示原因总结
1.js css顺序错误 <script type="text/javascript" charset="utf-8" src="js/jque ...
- [iOS基础控件 - 6.9.3] QQ好友列表Demo TableView
A.需求 1.使用plist数据,展示类似QQ好友列表的分组.组内成员显示缩进功能 2.组名使用Header,展示箭头图标.组名.组内人数和上线人数 3.点击组名,伸展.缩回好友组 code so ...
- 在线的JSON formate工具
一个非常好的json formate工具 可以很容易发现json的错误,以及对json进行格式化 https://jsonformatter.curiousconcept.com/
- ManagementFactory (一) getClassLoadingMXBean
ClassLoadingMXBean case import java.lang.management.ClassLoadingMXBean; import java.lang.management. ...
- Android中回调接口的使用
MainActivity如下: package cn.testcallback; import android.os.Bundle; import android.app.Activity; /** ...
- TypeScript学习笔记(一):介绍及环境搭建
官网 TypeScript目前还在快速的发展中,当前的版本是1.6,有关TypeScript更多的信息可以在其官网中获取. http://www.typescriptlang.org/ 什么是Type ...