JDBC-mysql

JDBC(Java DataBase Connectivity)

称为:java访问数据库的解决方案,希望以相同的方式访问不同的数据库

目的:以实现与具体数据库无关的java操作。JDBC定义了一整套的标准接口,即访问数据库通用的API,不同的数据库厂商根据各自数据库特点去实现这些接口,从而得到java程序的访问。

1、JDBC接口

    1)驱动管理(用来获取连接)

DriverManager

    2)连接接口

Connection

    3)语句对象(对应执行的操作)

Statement

PreparedStatement

    4)结果集接口

ResultSet

2、JDBC工作流程

    1)加载驱动,建立连接

    2)创建语句对象

    3)执行sql语句

    4)处理结果集

第一种:查询(包含结果集,执行第四步)

第二种:更新(不需要去处理结果集,可省略第四步)

    5)关闭连接

3、代码说明

Driver接口及驱动类加载(oracle)

Class.forName("oracle.jdbc.driver.OracleDriver");

说明:使用反射机制实例化OracleDriver驱动类(从jdbc2开始就不需要显示调用,调用getConnection()会自动加载合适的驱动。建议直接添加驱动)

con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","123456");

说明:127.0.0.1表示服务器地址(也可以用localhost)

           1521表示oracle端口号

           orcl表示数据库应用名

           Connection只是一个接口,真正的实现是由数据库厂商提供的驱动包完成

Statement st=con.createStatement(); //创建语句对象
st.executeQuery(sql);  //返回ResuitSet结果集,用于查询
st.executeUpdate(sql);  //返回int,用于增加、修改、删除

说明:ResultSet结果集:执行查询sql语句返回的结果集,查询的结果存放在ResultSet对象的一系列中,最初位置是位于行首

           rs.next()方法用于在行间移动,rs.getXX()方法用来取字段对应的数据

4、MySQL的Driver接口及驱动类

Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student","root","1234");

5、在src下面创建文件:db.properties(.properties后缀名为这样的文件)将驱动和连接数据库的操作都放在该文件中

注意:

a. 更改编码格式为utf-8

b. 该文件存储方式是以键值对存储的(key-value)

c. 文件中使用注释是以“#”开头,中文字符存储会乱码,使用英文

6、语句对象:Statement与PreparedStatement的区别

Statement:主要用于执行静态的sql语句(表示内容固定不变的sql语句)。Statement每一次执行都要对传入的sql语句进行编译,效率低

某些情况下,sql语句只是其中的参数不同,其他的字句都是相同的,这种适合用PreparedStatement,PreparedStatement能够预防sql注入攻击问题

PreparedStatement也是一个接口,继承Statement,sql语句有提前编译(效率高)。常用的方法以被修改,方法不在需要参数。executeQuery()、executeUpdate()

       如:insert into dept_xu values(?,?,?);  //用问号代替参数

PreparedStatement实例包含事先编译的sql语句,sql语句可以有一个或n个IN参数,IN参数的值在sql语句创建时未被指定,此语句为每个IN参数保留一个问号(问号作为占位符),每一个问号的值必须在执行语句之前,通过这样的setInt或setString方法提供进行赋值

PreparedStatement对象以被预编译过,其执行速度是快于Statement对象的,建议多次执行的sql语句创建为PreparedStatement对象,以提高效率,如:批处理。

原文地址:https://www.cnblogs.com/xslzwm/p/9674510.html