Java小白的数据库爱情(一)JDBC连接数据库
JDBC: java database connectivity java 与数据 库的连接
JAVA连接数据库 JDBC
直接连接
步骤:
1.加载驱动 (选择数据库) 驱动jar包是由数据库生产厂商提供 ,数据库的安装目录下寻找
2.建立连接 (与数据库建立连接)
3.封装sql
4.封装处理块(静态处理块,预处理块) (发送执行sql)
5.接口结果集并处理
6.关闭资源
1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver")
2.建立连接 (与数据库建立连接)
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:XE","SCOTT","TIGER");
3.封装sql
String sql = "select * from dept";
4.封装处理块(静态处理块,预处理块) (发送执行sql)
Statement state = conn.createStatement();
5.接口结果集并处理
ResultSet result = state.executeQuery(sql);
处理
while(result.next()){
int deptno = result.getInt(1);
String dname = result.getString(2);
String loc = result.getString(3);
System.out.println(deptno+"-->"+dname+"-->"+loc);
6.关闭资源
使用配置文件
public class JDBCDemo02 {
public static void main(String[] args) {
Properties pro = new Properties();
//加载
try {
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
} catch (IOException e) {
e.printStackTrace();
}
//1.加载驱动
try {
Class.forName(pro.getProperty("driver"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection conn = null;
Statement state = null;
ResultSet result = null;
try {
//2.获取连接
conn = DriverManager.getConnection(
pro.getProperty("url"),
pro.getProperty("username"),
pro.getProperty("password")
);
//3.准备sql
String sql = "select empno,ename,sal from emp where deptno = 30";
//4.封装处理块 预处理块
state = conn.createStatement();
//5.发送并执行
result = state.executeQuery(sql);
//6.操作数据
while(result.next(){
System.out.println(result.getObject("empno"));
System.out.println(result.getObject("ename"));
System.out.println(result.getObject("sal"));
System.out.println("--------------------------------------");
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
if(result!=null){
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(state!=null){
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
username=SCOTT //数据库用户
password=TIGER //密码
处理块
静态处理块: sql语句有手动拼接,不安全,有可能出现sql注入情况
预处理块: 1.预先编译,提高效率 2.防止sql注入
Connection.createStatement()
//准备sql
String sql = "select password from t_user where username = ? and password = ?";
//3.封装处理块
state = conn.prepareStatement(sql);
//4.为?赋值
state.setString(1,name);//给第一个问号赋值
state.setObject(2,pwd);//给第二个问好赋值
接口结果集并处理
进行增删改操作时,返回以rows 行数操作成功 使用
state.executeUpdate();
进行select语句的查询时,会返回以set 集合 使用
state.executeQuery();
手动提交事务
//设置手动提交事务
conn.setAutoCommit(false);
//提交
conn.commit();
//回滚
conn.rollback();