• 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+"	"+job_title+"	"+min_salary+"	"+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+"	"+job_title+"	"+min_salary+"	"+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
      • 原因:可能输入的值的类型不对,确定是否插入的元素时对应的值的类型正确
  • 相关阅读:
    MongoCola Web化
    Qsys在系统集成中的应用
    js浏览器和浏览器插件检测的方法总结
    搭建一个简单的Struts2应用
    Moon.ORM最便捷轻盈的ORM
    如何从 Winform 移植到 Webform [自己搞定HTTP协议]
    细细品味Hadoop_Hadoop集群(目录)
    微软SQL Server 2012新特性Silverlight报表客户端 Power View
    json入门实例
    项目经理
  • 原文地址:https://www.cnblogs.com/techoc/p/13624097.html
Copyright © 2020-2023  润新知