Java-JDBC与java数据库编程-java代码连接数据库
原创约 979 字大约 3 分钟...
253-Java-JDBC与java数据库编程-java代码连接数据库.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
概念
- JDBC概述
- JDBC核心接口与类
- JDBC核心类库包含在java.sql包中。
- 类
- DriverManager:负责管理JDBC驱动程序。使用JDBC驱 动程序之前,必须先将驱动程序加载并注册后才可以使 用,同时提供方法来建立与数据库的连接。
- SQLException-有关数据库操作的异常
- 接口:
- Connection:特定数据库的连接(会话)。在连接上下 文中执行SQL语句并返回结果。
- PreparedStatement:表示预编译的 SQL 语句的对象。
- Statement:用于执行静态 SQL 语句并返回它所生成结 果的对象。
- ResultSet :表示数据库结果集的数据表,通常通过执 行查询数据库的语句生成 。
- CallableStatement :用于执行 SQL 存储过程的接口
- 类
示例代码
package com.tencent.chapter07.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.tencent.chapter07.jdbc.entity.Emp;
public class EmpStatementDao {
/**
创建JDBC应用程序的步骤:
0.项目右键-新建lib文件夹-将classes12.jar或者ojdbc14.jar复制到文件夹-classes12.jar右键-build path - add to build path
1.载入JDBC驱动程序
2.定义连接URL
3.建立连接
4.创建Statement对象
5.执行查询或更新
6.结果处理
7.关闭连接
Statement:
1.执行静态SQL语句
2.有SQL注入风险
PreparedStatement:
1.预编译SQL语句
2.解决SQL注入风险
CallableStatement:
1.执行存储过程
*/
public static void main(String[] args) {
EmpStatementDao dao = new EmpStatementDao();
//查询
List<Emp> empList = dao.selectEmps();
for (Emp emp : empList) {
System.out.println(emp.toString());
}
}
/**
* 查询所有的员工信息
* @return
*/
public List<Emp> selectEmps() {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
//1.载入JDBC驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");//驱动描述符 oracle.jdbc.driver.OracleDriver
//2.定义连接URL jdbc:oracle:thin:@<主机IP>:1521:<数据库服务名>
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
//3.建立连接
conn = DriverManager.getConnection(url, "scott", "scott123");
System.out.println(conn);
//4.创建Statement对象
stat = conn.createStatement();
//5.执行查询或更新
//stat.execute("sql"); //如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
//stat.executeQuery("sql"); //返回查询的结果集合ResultSet,适用于查询(select)
//stat.executeUpdate("sql"); //返回DML操作的影响行数,适用于新增(insert)、修改(update)、删除(select)
//stat.executeBatch(); //返回int[],使用批量删除、批量修改、批量新增
String empno = "8888 or 1=1 "; //SQL注入风险
rs = stat.executeQuery("select empno, ename empName, job, mgr, hiredate, sal, comm, deptno from emp where empno =" + empno);
//6.结果处理
List<Emp> empList = new ArrayList<Emp>();
while(rs.next())
{
//方式一:通过列索引index获取列的值
//int empno = rs.getInt(1);
//String ename = rs.getString(2);
//方式二:通过列名称label获取列的值-----【推荐】
//int empno = rs.getInt("empno");
//String ename = rs.getString("empName");
//每遍历一次,获得一个Emp的员工信息
Emp emp = new Emp();
emp.setEmpno(rs.getInt("empno"));
emp.setEname(rs.getString("empName"));
emp.setJob(rs.getString("job"));
//...............其他字段(略)
//将当前的emp添加到集合
empList.add(emp);
}
return empList;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//7.关闭连接
//使用顺序:Connection -> Statement -> ResultSet
//关闭顺序:ResultSet -> Statement -> Connection
try {
if(rs != null)
{
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stat != null)
{
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null)
{
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
}

分割线
相关信息
以上就是我关于 Java-JDBC与java数据库编程-java代码连接数据库 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
扩展知识
DAO:data access object
若为其它数据库Eclipse的操作





分割线
Powered by Waline v2.15.4