JDBC基础回顾

    科技2024-10-30  16

    当我们在实际开发中,当用户数据发生改变,我们不可能在通过客户端操作执行SQL语句,因为操作量过大,无法保证效率和正确性,因此jdbc产生了,可以使用java语言链接数据库完成CRUD操作。

    准备:添加数据库驱动,准备相应的数据库连接池的jar包

    连接步骤:

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

    2.连接数据库   Connection conn = DriverManager.getConnection("jdbc:mysql://连接url:数据库端口/数据库名", "用户名","密码");

    3.获取发送SQL对象  :Statement statement = conn.createStatement(); 通过 Connection 对象获得 Statement 对象,用于对数据库进行通用访问。

    4.执行SQL语句:编写SQL语句,int result = statement.executeUpdate(”SQL语句“);//执行SQL语句并接收结果

    !!!!!!!

    注意:在编写 DML 语句时,一定要注意字符串参数的符号是单引号 '值'

    DML 语句:增删改时,返回受影响行数(int 类型)。

    DQL 语句:查询时,返回结果数据(ResultSet 结果集)。

    5.处理结果接受处理操作的结果

    受影响行数:逻辑判断、方法返回。

    查询结果集:迭代、依次获取。

    6.释放资源,遵循先开后关原则,释放所有使用到的资源对象   statement.close();    conn.close();

     

    常见错误

    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

    原因:可能输入的值的类型不对,确定是否插入的元素时对应的值的类型正确

    sql注入

    用户输入的数据中有 SQL 关键字或语法并且参与了 SQL 语句的编译,导致 SQL 语句编译后的条件含义为 true,一直得到正确的结果。这种现象称为 SQL 注入。

    避免sql注入

    由于编写的 SQL 语句是在用户输入数据,整合后再进行编译。所以为了避免 SQL 注入的问题,我们要使 SQL 语句在用户输入数据前就已进行编译成完整的 SQL 语句,再进行填充数据。

    PreparedStatement

    预编译SQL 语句,效率高。

    安全,避免SQL注入 。

    可以动态的填充数据,执行多个同构的 SQL 语句。

    PreparedStatement pstmt = conn.prepareStatement("select * from user where username=? and password=?");

    !!!注意:JDBC中的所有参数都由 ?符号占位,这被称为参数标记。在执行SQL语句之前,必须为每个参数提供值

     

     

     

     

     

     

    Processed: 0.040, SQL: 8