JDBC:(Java Database Connectivity,简称JDBC)是用来规范客户端程序如何来访问数据库的应用程序接口,记住它是一个接口,这个接口里面有这5大类
1.DriverManager:驱动管理对象
2.Connection:数据库连接对象
3.Statement:执行sql的对象
4.ResultSet:结果集对象
5.PreparedStatement:执行sql的对象
数据库驱动 (驱动就是硬件和操作系统之间的翻译官)
驱动:声卡,显卡,数据库。
数据库直接放到java里面不行,用不了 。
我们的程序 会通过数据库驱动,和数据库打交道
。
JDBC(类似于计算机的操作系统,我们只需和操作系统联系,就可以操纵电脑的底层硬件等)
sun公司为了简化开发人员的(对数据库的统一)操作,提供了一个(java操作数据库的)规范,俗称JDBC,这些规范的实现由具体的厂商去做
对于开发人员来说,我们只需要掌握JDBC的操作即可。
java.sql
javax.sql
还需要导入一个数据库驱动包mysql-connector-java-5.1.47.jar包,(官网下)。
数据库中的数据
测试代码:
1 public class jdbcFirstDemoTest01 { 2 public static void main(String[] args) throws ClassNotFoundException, SQLException { 3 // 1)加载驱动 4 Class.forName("com.mysql.jdbc.Driver"); // 这里要抛出异常 5 6 // 2)url ,用户名,密码,连接位置 7 String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false"; 8 String name = "root"; 9 String password = "123456"; 10 11 // 3)点击连接 注意这里的参数顺序不要搞错 12 Connection connection = DriverManager.getConnection(url,name, password);// 注意这里也要抛出异常 13 14 // 4)打开一个查询窗口 15 Statement statement = connection.createStatement(); 16 17 // 5)输入查询语句,点击执行 18 String sql = "SELECT * FROM users"; 19 ResultSet resultSet = statement.executeQuery(sql); // 返回一个结果集 20 21 // 6)输出结果 22 while(resultSet.next()) { 23 System.out.print("id :" + resultSet.getObject("id")); 24 System.out.print("name :" + resultSet.getObject("name")); 25 System.out.print("password:" + resultSet.getObject("password")); 26 System.out.print("email:" + resultSet.getObject("email")); 27 System.out.print("birthday :" + resultSet.getObject("birthday")); 28 } 29 // 关闭打开的连接,不关的话造成资源浪费 30 resultSet .close(); 31 statement.close(); 32 connection.close(); 33 34 } 35 }
代码解析:
1)String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
协议://主机地址:端口号/数据库名?参数1&参数2&参数3
2)connection 就代表数据库
connection.rollback(); // 事务回滚
connection.commit(); // 事务提交
connection.setAutoCommit(); // 事务自动提交
3)Statement:执行sql语句的类。它的对象用于向数据库发送SQL语句,完成对数据库的增删改查
Statement.executeQuery(); // 查询操作返回ResultSet
Statement.execute(); // 执行任何sql
statement.executeUpdate(); // 更新,插入,删除都是用这个,返回受影响的行数,这个也可以用来查,只是效率低一点
4) ResultSet:查询的结果集,封装了所有的内容
resultSet.next(); // 移动到下一个
resultSet.beforeFirst(); // 移动到最前面
resultSet.afterLast(); // 移动到最后面
连接数据库的函数getConnection源码
结果:
public class jdbcFirstDemoTest01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1)加载驱动
Class.forName("com.mysql.jdbc.Driver"); // 这里要抛出异常
// 2)url ,用户名,密码,连接位置
String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
String name = "root";
String password = "123456";
// 3)点击连接 注意这里的参数顺序不要搞错
Connection connection = DriverManager.getConnection(url,name, password);// 注意这里也要抛出异常
// 4)打开一个查询窗口
Statement statement = connection.createStatement();
// 5)输入查询语句,点击执行
String sql = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(sql); // 返回一个结果集
// 6)输出结果
while(resultSet.next()) {
System.out.print("id :" + resultSet.getObject("id"));
System.out.print("name :" + resultSet.getObject("name"));
System.out.print("password:" + resultSet.getObject("password"));
System.out.print("email:" + resultSet.getObject("email"));
System.out.print("birthday :" + resultSet.getObject("birthday"));
}
// 关闭打开的连接,不关的话造成资源浪费
resultSet .close();
statement.close();
connection.close();
}
}