JavaWeb——JDBC的基础用法

JDBC的基础用法

JDBC核心思想

JDBC API

JDBC是由多个接口和类进行功能实现的

类型 权限定名 简介
class java.sql.DriverManager 管理多个数据库驱动类,提供了获取数据库连接的方式
interface java.sql.Connection 代表一个数据库连接(当connection不是null时,表示已连接数据库)
interface java.sql.Statement 发送SQL语句到数据库工具
interface java.sql.ResultSet 保存SQL查询语句的结果数据(结果集)
class java.sql.SQLException 处理数据库应用程序时所发生的异常

环境搭建

  • 在项目下新建lib文件夹,用于存放jar文件
  • 将mysql驱动mysql-connector-java-5.1.25-bin.jar复制到项目的lib文件夹中
  • 选中lib文件右键Add as Libraay(添加到库),点击OK

JDBC开发步骤【重点

1.注册驱动

使用Class.forName("com.mysql.jdbc.Driver");手动加载字节码文件到JVM中。

Class.forName("com.mysql.jdbc.Driver");	//加载驱动

2.连接数据库

  • 通过DriverManager.getConnection(url,user,password)获取数据库连接对象
    • URL:jdbc:mysql://localhost:3306/database
    • username:root
    • password:root
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","1234");

3.获取发送的SQl对象

通过Connection对象获得Statement对象,用于对数据库进行通用访问。

Statement statement = connection.createStatement();

4.执行SQL语句

执行SQL语句并接受执行结果

String sql = "insert into t_jobs(job_id,job_title,min_salary,max_salary) values('H5_Mgr','H5_Manager',4000,10000)";
int result = statement.executeUpdate(sql);
  • 注意:在编写DML语句时,一定要注意字符串参数的符号是单引号'值'
  • DML语句:增删改时,返回受影响行数(int类型)。
  • DQL语句:查询时,返回结果数据(ResultSet结果集)。

5.处理结果

接受处理操作结果

if (result == 1){
    System.out.println("Success");
}
  • 受影响行数:逻辑判断、方法返回
  • 查询结果集:迭代、依次获取

6.释放资源

先开后关原则

statement.close;
connection.close;

ResultSet (结果集)

在执行查询SQL后,存放查询到的结果集数据

1.接受结果集

ResultSet rs = statemnet.executeQuery("select * from t_employees;");

2.遍历ResultSet中的数据

ResultSet以表(table)结构进行临时结果的存储,需要通过JDBCAPI将其中数据进行依次获取。

  • 数据行指针:初始位置在第一行数据前,每调用一次boolean next()方法ResultSet的指针向下移动一行,结果为true,表示当前行有数据。
  • rs.getXxx(整数); 代表根据列的编号顺序获得,从1开始。
  • rs.getXxx("列名"); 代表根据列名获得。
		//根据列的编号
		ResultSet resultSet = statement.executeQuery("select * from t_jobs");
        //处理结果
        while(resultSet.next()){//判断下一行是否有数据
            //对当前行每列数据进行获取  根据列的编号
            String job_id = resultSet.getString(1);
            String job_title = resultSet.getString(2);
            String min_salary = resultSet.getString(3);
            String max_salary = resultSet.getString(4);
            System.out.println(job_id+"\t"+job_title+"\t"+min_salary+"\t"+max_salary);
        }
		//列名获取
		ResultSet resultSet = statement.executeQuery("select * from t_jobs");
        //处理结果
        while(resultSet.next()){
            String job_id = resultSet.getString("job_id");
            String job_title = resultSet.getString("job_title");
            String min_salary = resultSet.getString("min_salary");
            String max_salary = resultSet.getString("max_salary");
            System.out.println(job_id+"\t"+job_title+"\t"+min_salary+"\t"+max_salary);
        }

常见错误

  • java.lang.ClassNotFoundException:找不到类(类名书写错误、没有导入jar包)
  • java.sql.SQLException:与sql语句相关的错误(约束错误、表名列名书写错误)建议:在客户端工具中测试SQL语句之后再粘贴在代码中
  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column原因:列值Sting类型没有加单引号
  • Duplicate entry'1'for key'PRIMARY'原因,主键值已存在或混乱,更改主键值或清空表
  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column'password'in
    • 原因:可能输入的值的类型不对,确定是否插入的元素时对应的值的类型正确
posted @ 2020-09-06 22:41  Techoc  阅读(187)  评论(0编辑  收藏  举报