关系型数据库
MySQL、Oracle、DB2、SQL Server
JDBC API
DriverManager类
getConnection(String url,String name,String password)
Connection接口
Statement接口
数据类型
数据库访问
使用JDBC访问数据库的步骤:
- 加载数据库驱动
- 建立数据连接
- 创建Statement对象
- 执行SQL语句
- 获取结果集
加载数据库驱动
建立数据库连接
关闭连接
2018.8.28
package Chapter0829;
import java.sql.*;
public class PreparedStatementDemo {
static String url = "jdbc:oracle:thin:@localhost:1521:Kar98k";
static String name = "C##Sakura";
static String password = "011997";
public static void main(String[] args) {
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection(url, name, password);
String sql = "insert into \"UserDetails\" VALUES (?,?,?,?,?,?,?,?)";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,8);
preparedStatement.setString(2,"李斯");
preparedStatement.setString(3,"李斯");
preparedStatement.setString(4,"M");
preparedStatement.setString(5,"李斯");
preparedStatement.setString(6,"李斯");
preparedStatement.setString(7,"李斯");
preparedStatement.setString(8,"李斯");
int i=preparedStatement.executeUpdate();
preparedStatement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
存储过程
缺点:不能打日志。
CallableStatement接口
执行存储过程
CallableStatement callableStatement=connection.prepareCall("{call addUserDetails(?,?,?,?,?,?,?,?)}");
callableStatement.setInt(1,7);
callableStatement.setString(2,"BOO");
callableStatement.setString(3,"BOO");
callableStatement.setString(4,"O");
callableStatement.setString(5,"BOO");
callableStatement.setString(6,"BOO");
callableStatement.setString(7,"BOO");
callableStatement.setString(8,"BOO");
callableStatement.execute();
事务
线程
主线程、子线程交替执行:
package Chapter0829;
public class ThreadDemo extends Thread {
public void run() {
for (int i = 0; i < 2000; i++) {
// try {
// Thread.sleep(10);
System.out.println("*****当前运行子线程。*****");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
}
public static void main(String[] args) {
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.start();
for(int i=0;i<2000;i++){
System.out.println("当前运行主线程。");
}
}
}
运行结果:
2018.8.29