JDBC
数据驱动
程序通过数据驱动于数据库进行操作,不同的数据库有不同的数据驱动。
JDBC
sun公司为了简化开发人员对数据库的统一操作,提供了一个Java数据库的规范,俗称JDBC
这些规范的具体实现由具体的厂商去做
开发人员只需要掌握JDBC接口操作即可。
- Java.sql
- javax.sql
- 数据库驱动包
第一个JDBC程序:
package TestDataBase;
import java.sql.*;
public class Test1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动,固定
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和URL
//?:连接参数
//useUnicode=true Unicode编码&& characterEncoding=utf8 字符集&& useSSL=true安全连接
//写上报错useSSL=true,不知道为什么?
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&&characterEncoding=utf8";
String name="root";
String password="123456";
//3.连接成功,返回数据库对象 connection代表数据库
Connection connection = DriverManager.getConnection(url, name, password);
//4.执行SQL的对象
Statement statement = connection.createStatement();
//5.执行sql,可能存在结果,查看返回结果。
String sql="SELECT * FROM `sc`";
ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,封装了全部查询的结果。
while(resultSet.next()){
System.out.println("Sno"+':'+resultSet.getObject("Sno"));
System.out.println("Cno"+':'+resultSet.getObject("Cno"));
System.out.println("Grade"+':'+resultSet.getObject("Grade"));
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
一些重要的类:
DriverManager
//不推荐使用
//DriverManger.registerDrive(new com.mysql.Driver());
//推荐使用
//将指定类自动压入JVM中,执行静态块的内容。
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, name, password);
//connection 代表数据库
//数据库设置自动提交
//事务提交
//事务回滚
connection.rollback();
connection.commit();
connection.setAutoCommit();
下面是Driver类的代码:
相当于在类中的代码块已经执行了注册。
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
URL
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&&characterEncoding=utf8";
//类似于应用层的URL
//mysql----3306
//jdbc:mysql://主机地址:端口号/数据库名?参数1&&参数2...
//oracle---1521
//jdbc:oracle:thin@localhost:1524:sid
statement
执行sql对象,还有prepareStatement。
就是向数据库发送SQL语句,用于数据库的增删改查。
Statement statement = connection.createStatement();
statement.executeQuery(); //查询操作,返回ResultSet
statement.execute(); //执行任何SQL
statement.executeUpdate();//更新,插入,删除,返回受影响的行数。
ResultSet
查询的结果集,封装了所有的查询结果。
获得指定的数据类型:
resultSet.getObject();//不清楚类型的情况下使用
//如果知道列的类型就使用指定类型
resultSet.getInt();
resultSet.getFloat();
resultSet.getDouble();
resultSet.getChar();
resultSet.getDateTime();
遍历,指针:
resultSet.next();//移动到下一个
resultSet.beforeFirst();
resultSet.afterLast();
resultSet.previous();//移动到下一个
resultSet.absolute();//移动到指定的行
释放资源
//十分占用空间
resultSet.close();
statement.close();
connection.close();