第一个JDBC程序

 

创建测试数据库

 


CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci;

USE jdbcStudy;

CREATE TABLE `users`(
id INT PRIMARY KEY,
NAME VARCHAR(40),
PASSWORD VARCHAR(40),
email VARCHAR(60),
birthday DATE
);

INSERT INTO `users`(`id`,`NAME`,`PASSWORD`,`email`,`birthday`)
VALUES(1,'zhangsan','123456','zs@sina.com','1980-12-04'),
(2,'lisi','123456','lisi@sina.com','1981-12-04'),
(3,'wangwu','123456','wangwu@sina.com','1979-12-04')

 

  • 创建一个项目

  • 导入数据库驱动

    • 新建一个lib目录

     

     第一个JDBC程序_加载

     

     

     

    • 把jar包拷入lib目录下

    • Add as library

 

 

 第一个JDBC程序_sql_02

 

 

  • 编写测试代码


package com.peng.lessons;


import java.sql.*;

//我的第一个JDBC程序
public class JdbcFirstDemo {
   public static void main(String[] args) throws ClassNotFoundException, SQLException {
       //1,加载驱动
       Class.forName("com.mysql.jdbc.Driver");//这里会报错,先把这个异常抛出
       //固定写法,加载驱动


       //2,用户信息和url

       //useUnicode=true(支持中文编码)&characterEncoding=utf8(设定字符集为utf8)&useSSL=true(使用安全的连接)
       String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
       String username = "root";
       String password = "123456";

       //3,连接成功
       // Connection 代表数据库
       Connection connection = DriverManager.getConnection(url, username, password);//这里会报错,先抛出(快捷键:Alt+Enter)

       //4,执行sql的对象
       //Statement   执行sql的对象
       Statement statement = connection.createStatement();


       //5,用执行的对象 去 执行sql可能存在结果,查看返回结果
       String sql = "SELECT * FROM `users`";

       // statement.executeQuery(sql);用执行的对象 去 执行sql可能存在结果
       // executeQuery是查询的意思
       ResultSet resultSet = statement.executeQuery(sql);//返回结果集,结果封装了我们查询出来的全部结果

       //查看返回的结果
       while(resultSet.next()){
           System.out.println("id=" + resultSet.getObject("id"));
           System.out.println("name=" + resultSet.getObject("NAME"));
           System.out.println("pwd=" + resultSet.getObject("PASSWORD"));
           System.out.println("email=" + resultSet.getObject("email"));
           System.out.println("birth=" + resultSet.getObject("birthday"));
           System.out.println("=============================");
      }

       //6,释放连接
       //一定要记得关闭,否则非常浪费资源
       resultSet.close();
       statement.close();
       connection.close();

  }
}

 

步骤总结:

1,加载驱动

2,连接数据库 DriverManager

3,获得执行sql的对象 Statement

4,获得返回的结果值

5,释放连接

 

 

 

JDBC对象的解释

 

DriverManager

//推荐第二种写法
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");//固定写法,加载驱动
Connection connection = DriverManager.getConnection(url, username, password);


//connection 代表数据库
//数据库设置自动提交
//事务提交
//事务回滚
connection.rollback();
connection.commit();
connection.setAutoCommit();

 

URL

String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";

//mysql --3306
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3

//oralce -- 1521
//jdbc:oracle:thin:@localhost:1521:sid

 

Statement 执行SQL的对象

PrepareStatement 执行SQL的对象

String sql = "SELECT * FROM `users`";  //编写SQL


statement.executeQuery();//查询操作返回ResultSet
statement.execute();//执行任何SQL
statement.executeUpdate();//更新,插入,删除,都是用这个,返回一个受影响的行数

 

ResultSet查询的结果集:封装了所有的查询结果

获得指定的数据类型

//在不知道列类型的情况下使用
resultSet.getObject();
       
//如果知道列的类型就使用指定的类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
......

遍历,指针

resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个数据
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到指定行

 

释放资源

resultSet.close();
statement.close();
connection.close();//用完关掉