三、操作Dept表。
1.使用实体类来封装Dept表。
实体类(pojo类):其作用是用来封装表中的一条数据。(或:用来封装类的属性和方法)。
表中的一条记录:对应于一个实体。
写实体类:必须写三部分:属性、默认构造方法(无参构造方法)、setter和getter方法。其他方法:用到才写,不用就不写。
package com.lxd.pojo;
import java.io.Serializable;
/**
* 实体类(pojo类)
*
* @author XiangdongLee
*
*/
public class Dept implements Serializable {
private static final long serialVersionUID = 1L;
private Integer deptno;
private String dname;
private String loc;
public Dept() {
super();
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
代码说明:
(1)创建该类的时候,实现Serializable接口。之后,在该行左侧标黄的部位双击,选择“Add default serial version ID”,即可出现第12行代码。
2.创建数据库工具类,来获得数据库连接与关闭数据库连接。
package com.lxd.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* DBUtil:数据库工具类
*
* @author XiangdongLee
*
*/
public class DBUtil {
/**
* 获得数据库连接
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
String driverName = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String username = "scott";
String password = "tiger";
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
System.out.println("加载数据库驱动出错...");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("获得数据库连接出错...");
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库连接
*
* @param conn
* @param ps
* @param rs
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
// 关闭原则:先开后关,后开先关
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
System.out.println(getConnection());
}
}
代码说明:
(1)写getConnection()方法时,先写如下结构:
public static Connection getConnection() {
Connection conn = null;
return conn;
}
因为方法需要返回Connection类型的参数,因此先写出此结构,然后再在内部开始填写代码。
(2)第23行代码:取得数据库驱动程序。
写驱动的时候,先在外面点出oracle.jdbc.OracleDriver,然后剪切入引号中。
另外,11g中的数据库驱动程序为:oracle.jdbc.OracleDriver,10g的数据库驱动程序为:oracle.jdbc.driver.OracleDriver。11g也可以通过10g的方式取得,这是为了向下兼容,但是性能不太好。
(3)第24行代码:url:连接数据库的路径(协议)。
127.0.0.1:该部位填写安装Oracle数据库的计算机的IP地址。127.0.0.1是特殊的地址,是环回地址。(服务器和客户端在同一台机器上,转一圈是客户端,再转一圈又是服务器。)该处,也可以用 localhost,但是不建议用。因为实际开发中,服务器和客户端是不在一台机器上的。
1521:Oracle端口号。每个应用程序都有一个唯一的端口号。通过该端口号可以找到是哪个应用程序。Oracle的端口号默认是1521,如果为了防止黑客攻击,在安装数据库的时候,应该改端口号。
orcl:Oracle实例名。通过实例,可以找到数据库中的表分区。
(4)第25、26行:连接数据库的用户名和密码。注意必须是普通用户。
(5)第29行:加载数据库驱动。
第30行:通过驱动管理器类,获得数据库连接。
(6)第48-73行:关闭数据库。
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
// 关闭原则:先开后关,后开先关
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
注意:不能用此写法来关闭。如果先关的,在关闭的时候出了错,后面的也会受影响。
(7)第75-77行:测试类。
3. 创建dao类,来封装Dept表的所有操作(增删改查CRUD)。
package com.lxd.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.newer.pojo.Dept;
/**
* 封装表 DEPT 的所有操作(增删改查 CRUD CreateReadUpdateDelete)
*
* @author XiangdongLee
*
*/
public class DeptDao {
// 成员变量:下面的方法都要用到它们3个,因此提在最前面。
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
/**
* 查询所有数据
*
* @return
*/
// 查询表:访问的是结果集(多条记录)。——因此要用集合。——用List:先放进去的先出来;允许重复值。
public List<Dept> find() {
List<Dept> depts = new ArrayList<Dept>();
try {
// 1.加载数据库驱动类
// 2.获得数据库连接
conn = DBUtil.getConnection();
// 查询所有记录
// String sql = "select * from dept ";
// 根据条件查询记录
String sql = "select * from dept ";
sql += " where deptno<=30";
// 3.通过操作句柄执行SQL语句
ps = conn.prepareStatement(sql);
// 4.获得结果集
rs = ps.executeQuery();
// 5.处理结果集
while (rs.next()) {
Dept dept = new Dept();
// 根据字段名获得字段值(列的值)
dept.setDeptno(rs.getInt("deptno"));
dept.setDname(rs.getString("dname"));
// 根据字段索引获得字段值(列的值)。下标从 1 开始。
dept.setLoc(rs.getString(3));
// 把每一条数据添加到集合中
depts.add(dept);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 6.关闭结果集
// 7.关闭操作句柄Statement
// 8.关闭连接
DBUtil.close(conn, ps, rs);
}
return depts;
}
/**
* 新增数据
*
* @param dept
* @return
*/
public int add(Dept dept) {
int count = 0;
try {
conn = DBUtil.getConnection();
// ? 使用占位符传参 (下标从 1 开始)
String sql = "insert into dept(deptno,dname,loc) ";
sql += " values(?,?,?)";
ps = conn.prepareStatement(sql);
// 设置 占位符 的参数
ps.setInt(1, dept.getDeptno());
ps.setString(2, dept.getDname());
ps.setString(3, dept.getLoc());
// 执行新增语句
count = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, ps, rs);
}
return count;
}
/**
* 修改数据
*
* @param dept
* @return
*/
public int modify(Dept dept) {
int count = 0;
try {
conn = DBUtil.getConnection();
String sql = "update dept set dname=? , loc=? ";
sql += " where deptno=?";
ps = conn.prepareStatement(sql);
ps.setString(1, dept.getDname());
ps.setString(2, dept.getLoc());
ps.setInt(3, dept.getDeptno());
// 执行更新语句
count = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, ps, rs);
}
return count;
}
/**
* 删除数据
*
* @param deptno
* @return
*/
public int remove(Integer deptno) {
int count = 0;
try {
conn = DBUtil.getConnection();
String sql = "delete dept where deptno=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, deptno);
// 执行更新语句
count = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, ps, rs);
}
return count;
}
}
代码说明:
(1)dao:Data Access Object (数据访问对象)。
(2)JDBC 访问数据库的步骤:(八部曲、天龙八部)
1. 加载数据库驱动类
2. 获得数据库连接(打开水厂阀门)
3. 获得数据库操作句柄(打开小区阀门)
4. 获得结果集(打开家里阀门)
5. 处理结果集(做事)
6. 关闭结果集(关闭家里阀门)
7. 关闭操作句柄(关闭小区阀门)
8. 关闭数据库连接(关闭水厂阀门)
(3)第40行,在写完sql语句后,后面记得空一格。第41行,在开始写sql语句的时候,引号内记得先空一格再开始写。这样做是为了防止两个句子连接的时候出错。
4.测试dao类,对Dept表进行操作。
package com.lxd.test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.newer.dao.DeptDao;
import com.newer.pojo.Dept;
/**
*
* @author XiangdongLee
*
*/
public class DeptDaoTest {
private DeptDao dao;
// @Before注解:在所有@Test测试方法之前首先运行init()方法。作用:初始化资源
@Before
public void init() {
// System.out.println("init");
dao = new DeptDao();
}
@Test
public void find() {
for (Dept dept : dao.find()) {
System.out.println(dept.getDeptno() + " " + dept.getDname() + " "
+ dept.getLoc());
}
}
// 也可以拆开写成如下形式:
// List<Dept> depts = dao.find();
// for (Dept dept : depts) {
// System.out.println(dept.getDeptno() + " " + dept.getDname() + " "
// + dept.getLoc());
// }
// }
@Test
public void add() {
Dept dept = new Dept();
dept.setDeptno(52);
dept.setDname("IT");
dept.setLoc("cs");
int count = dao.add(dept);
if (count > 0) {
System.out.println("新增成功.");
} else {
System.err.println("新增失败.");
}
}
@Test
public void modify() {
Dept dept = new Dept();
dept.setDeptno(50); // 该部门必须已存在
dept.setDname("Java");
dept.setLoc("sh");
int count = dao.modify(dept);
if (count > 0) {
System.out.println("修改成功.");
} else {
System.err.println("修改失败.");
}
}
@Test
public void remove() {
Dept dept = new Dept();
dept.setDeptno(50); // 该部门必须已存在
int count = dao.remove(dept.getDeptno());
if (count > 0) {
System.out.println("删除成功.");
} else {
System.err.println("删除失败.");
}
}
}
分享到:
相关推荐
使用jdbc连接greenplum database所需要的依赖jar包。
Sybase官方的JDBC驱动程序——jConnect 驱动类名:com.sybase.jdbc3.jdbc.SybDriver 连接URL:jdbc:sybase:Tds:host:port/database?property_name=value
sqljdbc4-4.0.jar Cannot resolve com.microsoft.sqlserver:sqljdbc4:4.0
问题 解决方案 在hadoop的配置文件core-site.xml增加如下配置: hadoop.proxyuser.hc.hosts ...启动hiverserver2 查看是否启动:netstat -anp | grep 10000 3. 连接hiveserver2 作者:梁云亮
Sharding-JDBC教程:Mysql数据库主从搭建
Greenplum官方驱动JDBC版本5.1.4 官方驱动,相比PG驱动肯定要好用点。 驱动类:com.pivotal.jdbc.GreenplumDriver 驱动URL头:jdbc:pivotal:greenplum:
Sharding-JDBC教程:Spring Boot整合Sharding-JDBC实现分库分表+读写分离
sqljdbc4-4.0.jar下载 《无需积分》,自行提取 Maven安装cmd指令 mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar -Dfile=G:\迅雷下载\BB-sql...
链接gbase数据库的驱动包,"com.mysql.jdbc.Driver""jdbc:gbase://xx.xx.xx.xx:5258/xxxx"
Sharding-JDBC教程:Spring Boot整合Sharding-JDBC实现读写分离
常用 JDBC 驱动名字和 URL 列表 ODBC driver sun.jdbc.odbc.JdbcOdbcDriver jdbc:odbc:name 用 COM.ibm.db2.jdbc.net.DB2Driver 连接到 DB2 数据库 一个 DB2 URL 的示例: jdbc:db2://aServer.myCompany....
解决Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0问题 所需的sqljdbc4-4.0.jar包
Microsoft SQL Server JDBC...下载 Microsoft JDBC Driver 6.0 for SQL Server,这是一个 Type 4 JDBC 驱动程序,它通过 Java Platform Enterprise Edition 中可用的标准 JDBC 应用程序编程接口 (API) 提供数据库连接。
db2 10版本的JDBC驱动包。 jdbcURL: jdbc:db2://hostname:port/dbname | jdbc Driver class: com.ibm.db2.jcc.DB2Driver
"jdbc:pivotal:greenplum://xxx:5432;DatabaseName=core_db", "gpadmin", "gpadmin"); Statement st = db.createStatement(); ResultSet rs = st .executeQuery("SELECT * FROM core_db.analysis_user limit 100"); ...
java的jdbc连接数据库并使用操作,java的jdbc连接数据库并使用操作
达梦各个版本jdbc驱动
不直接把数据库连接信息写在程序里,而是单独使用一个properties(也就是mysql.ini)文件,来保存数据库连接信息另外,连接数据库和向数据库添加数据操作可以进行方法封装。 在目录创建配置文件: info.properties...
这个是我个人总结编写的代码,里面包括了JDBC的链接,使用的数据库是Oracle数据库,资源里面包含了Oracle的驱动jar包,以及java代码的完整案例,数据库版本:oracle11g,欢迎大家使用学习分享。
2 使用jdbc驱动:org h2 Driver 3 jdbc数据库URL:jdbc:h2: test test为h2 database默认提供的测试数据库 4 所有新数据库都会被自动创建 二 h2 database 的控制台">一 简介 h2 database 是一个开源免费的Java SQL...