实现查询数据库中的数据显示在java的控制台中
1、创建数据库表,并向表中添加测试数据
create database mydatabase;
use mydatabase;
CREATE TABLE user (
userId int(20) NOT NULL AUTO_INCREMENT,
userName varchar(20) DEFAULT NULL,
passWd varchar(20) DEFAULT NULL,
sex varchar(10) DEFAULT NULL,
birthday datetime NOT NULL,
PRIMARY KEY (userId)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8
像表中添加数据:
INSERT INTO USER VALUES('1','rq','123','nv','2016-10-06');
2、创建java project项目,添加数据库驱动(*.jar)
3、实现JDBC操作
//1、注册驱动
//2、创建连接
//3、得到执行sql语句的Statement对象
//4、执行sql语句,并返回结果
//5、处理结果
//6关闭资源
运行结果:
JDBC常用的类和接口详解
1.java.sql.Drivermanager类 : 创建连接
a.注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用
原因有2个:
> 导致驱动被注册2次。
> 强烈依赖数据库的驱动jar
解决办法:
Class.forName("com.mysql.jdbc.Driver");b.与数据库建立连接
static Connection getConnection(String url, Stringuser, String password)
试图建立到给定数据库 URL 的连接。
getConnection("jdbc:mysql://localhost:3306/day01","root", "root");
URL:SUN公司与数据库厂商之间的一种协议。
jdbc:mysql://localhost:3306/day01
协议 子协议 IP :端口号 数据库
mysql: jdbc:mysql://localhost:3306/day14 或者 jdbc:mysql:///day14(默认本机连接)
oracle: jdbc:oracle:thin:@localhost:1521:sid
Propertiesinfo = new Properties();//要参考数据库文档
info.setProperty("user","root");
info.setProperty("password","root");
getConnection(String url, Properties info)
getConnection(String url)
DriverManager.getConnection("jdbc:mysql://localhost:3306/day14?user=root&password=root");
2.java.sql.Connection接口:一个连接
接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。
3.java.sql.Statement接口: 操作sql语句,并返回相应结果的对象
接口的实现在数据库驱动中。用于执行静态SQL 语句并返回它所生成结果的对象。
ResultSet executeQuery(String sql) 根据查询语句返回结果集。只能执行select语句。
int executeUpdate(String sql) 根据执行的DML(insertupdate delete)语句,返回受影响的行数。
booleanexecute(String sql) 此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。仅当执行select语句,且有返回结果时返回true, 其它语句都返回false;
4.java.sql.ResultSet接口: 结果集(客户端存表数据的对象)a.封装结果集的
提供一个游标,默认游标指向结果集第一行之前。
调用一次next(),游标向下移动一行。
提供一些get方法。封装数据的方法:
ObjectgetObject(int columnIndex); 根据序号取值,索引从1开始
ObjectgetObject(String ColomnName); 根据列名取值b.可移动游标的方法
booleannext() 将光标从当前位置向前移一行。
boolean previous() 将光标移动到此 ResultSet 对象的上一行。
boolean absolute(int row) 参数是当前行的索引,从1开始 根据行的索引定位移动的指定索引行。
void afterLast()将光标移动到末尾,正好位于最后一行之后。
void beforeFirst() 将光标移动到开头,正好位于第一行之前。
资源有限,要正确关闭。