发表时间:2022-03-26来源:网络
1.1 简述JDBC应用程序的基本步骤
JDBC应用程序大概有以下六个步骤 1、创建连接对象 2、创建执行SQL语句的命令对象 3、执行sql语句 4、获取结果: 如果是查询获取结果集如果是更新 获取 影响的行数 5、如果是查询 需要从结果集中获取数据 6、关闭所有资源 先创建的对象后关闭 如下实例: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.S; import java.sql.Statement; public class Test1 { public static void main(String[] args) { //1、创建连接对象 Connection conn = null;//连接对象 Statement stmt = null;//命令对象 ResultSet rs = null;//结果集对象 try { Class.forName("oracle.jdbc.driver.OracleDriver");//获取驱动程序 conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl", "scott","scott123"); System.out.println(conn);//白盒测试 是否连接成功 //2、创建执行SQL语句的命令对象 stmt = conn.createStatement(); //3、执行sql语句 query_sal_by_empno String query_sal_by_empno = "select sal from emp where empno = "+7369; System.out.println(query_sal_by_empno);//白盒测试sql语句 //4.获取结果集如果是查询获取结果集 如果是更新则结果集是空 rs = stmt.executeQuery(query_sal_by_empno); //5.如果是查询,需要从结果集获取数据, if(rs.next()) {//将指针往下移确定是否为空 Double sal = rs.getDouble("sal");//调用方法并传列名返回结果 System.out.println(sal); } } catch (Exception e) { e.printStackTrace(); }finally { //6、关闭所有资源 先创建的对象后关闭 try { if(rs != null) { rs.close(); } if(stmt != null) { stmt.close(); } if(conn != null) { conn.close(); } } catch (S e) { e.printStackTrace(); } } } }1.2 简述Class.forName()的作用
Class.forName()作用是获取驱动程序1.3 简述对Statement,PreparedStatement理解
Statement 和 PreparedStatement的区别: 1.PreparedStatement是预编译的,就是sql语句在给占位符赋值之前会提前编译好 2.你的参数ename="jones' or 1='1",那么PreparedStatement就认为它是一个值, 不会对其中的内容进行解析,比如中间有个or,它不会解析 3.以后建议大家使用预编译的PreparedStatement,不但效率 高,能够重用,而且安全2.1 写一个连接Oracle数据库,并在User表中实现如下操作数据表定义如下:
首先在Oracle可视化工具中创建此表:
以pl/sql为例:
create table tab_user(
col_name varchar(50) primary key,
col_pwd varchar(6) not null,
col_email varchar(64),
col_birthday date
)
如图:
其次写对应的Java代码:
1.导入对应的jdbc包 导入步骤参考我的上一篇博客
Eclipse导入jdbc包
2、新建一个jdbc.properties文件,建立步骤参考我的上一博客
jdbc.properties文件建立及配置
3、对应的代码如下:
jdbc.properties
jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl jdbc_username=scott jdbc_password=abcde123 jdbc_driver=oracle.jdbc.driver.OracleDriverDBUtil.java
import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.S; import java.sql.Statement; import java.util.Properties; /** * 连接数据库的工具类 * @author xianxian * */ public class DBUtil { private static String driverName; private static String url; private static String username; private static String password; static { //如何读取属性文件:jdbc.properties //使用的技术:使用类加载器获取输入流进而加载属性文件,拿到其中的数据 InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties prop = new Properties(); try { prop.load(in); } catch (IOException e) { e.printStackTrace(); } driverName=prop.getProperty("jdbc_driver"); url=prop.getProperty("jdbc_url"); username=prop.getProperty("jdbc_username"); password=prop.getProperty("jdbc_password"); } //获取连接对象的方法 public static Connection getConnection() { Connection conn=null; try { Class.forName(driverName); conn=DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); } return conn; } //释放资源的方法 public static void release(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (S e) { e.printStackTrace(); } } }测试类:
import java.sql.Connection; public class Test { public static void main(String[] args) { Connection conn = DBUtil.getConnection(); System.out.println(conn); } }如图,经测试连接成功:
2.1.1 插入如下数据:
新建一个实体类User
import java.util.Date; /** * 实体类User * @author xxx * */ public class User { private String name; private String pwd; private String email; private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "User [name=" + name + ", pwd=" + pwd + ", email=" + email + ", birthday=" + birthday + "]"; } public User(String name, String pwd, String email, Date birthday) { super(); this.name = name; this.pwd = pwd; this.email = email; this.birthday = birthday; } public User() { super(); } }再建一个数据访问对象UserDao
最终得到效果如下:
2.1.2张三的时间更新为当前系统时间
2.1.3删除名为李四的全部记录
全部代码:
DBUtil
package highchapter6;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.S;
import java.sql.Statement;
import java.util.Properties;
/**
* 连接数据库的工具类
* @author xianxian
*
*/
public class DBUtil {
private static String driverName;
private static String url;
private static String username;
private static String password;
static
{
//如何读取属性文件:jdbc.properties
//使用的技术:使用类加载器获取输入流进而加载属性文件,拿到其中的数据
InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties prop = new Properties();
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
driverName=prop.getProperty("jdbc_driver");
url=prop.getProperty("jdbc_url");
username=prop.getProperty("jdbc_username");
password=prop.getProperty("jdbc_password");
}
//获取连接对象的方法
public static Connection getConnection()
{
Connection conn=null;
try {
Class.forName(driverName);
conn=DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//释放资源的方法
public static void release(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (S e) {
e.printStackTrace();
}
}
}
UserDao
package highchapter6;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
/**
* 数据访问对象UserDao
* @author xianxian
*
*/
public class UserDao {
// 添加一个用户信息
public int addUser(User user) {
int rows = 0;
Connection conn=null;
PreparedStatement stmt=null;
try {
conn=DBUtil.getConnection();
conn.setAutoCommit(false);
stmt=conn.prepareStatement("insert into tab_user (col_name,col_pwd,col_email,col_birthday) values (?,?,?,?)");
/*
* 注意:在执行更新的sql语句之前,需要先给占位符赋值
*/
stmt.setString(1, user.getName());
stmt.setString(2,user.getPwd());
stmt.setString(3, user.getEmail());
/*Date date=emp.getHiredate();
long time=date.getTime();
java.sql.Date date2=new java.sql.Date(time);*/
stmt.setDate(4,new java.sql.Date(user.getBirthday().getTime()));
/*
* 执行更新
*/
rows=stmt.executeUpdate();
if(rows == 1) {
conn.commit();
}else {
conn.rollback();
}
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (Exception e2) {
e2.printStackTrace();
}
}finally
{
DBUtil.release(conn, stmt, null);
}
return rows;
}
//更新某个用户信息
public int updateUser(User user) {
int rows = 0;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DBUtil.getConnection();
conn.setAutoCommit(false);
stmt = conn.prepareStatement("update tab_user set col_name=?,col_pwd=?,"
+ "col_email=?,col_birthday=? where col_name=?");
//注意:在执行更新操作之前必须 给点位符赋值
stmt.setString(1,user.getName());//1表示第一个?号
stmt.setString(2,user.getPwd());//2表示第二个?号
stmt.setString(3,user.getEmail());//3表示第三个?号
// Date date = emp.getHiredate();
// long time = date.getTime();
// java.sql.Date date2 = new java.sql.Date(time);
stmt.setDate(4,new java.sql.Date(user.getBirthday().getTime()));
stmt.setString(5,user.getName());
//执行 更新
rows = stmt.executeUpdate();
if(rows == 1) {
conn.commit();
}else {
conn.rollback();
}
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (Exception e2) {
e2.printStackTrace();
}
}finally {
DBUtil.release(conn, stmt, null);
}
return rows;
}
//删除某个用户信息
public int deleteUserByName(String name) {
int rows = 0;
Connection conn=null;
PreparedStatement stmt=null;
try {
conn=DBUtil.getConnection();
conn.setAutoCommit(false);
String delete_user_by_name="delete from tab_user where col_name=?";
stmt = conn.prepareStatement(delete_user_by_name);
stmt.setString(1,name);
rows=stmt.executeUpdate(delete_user_by_name);
if(rows == 1) {
conn.commit();
}else {
conn.rollback();
}
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (Exception e2) {
e2.printStackTrace();
}
}finally
{
DBUtil.release(conn, stmt, null);
}
return rows;
}
Test
package highchapter6;
import java.sql.Connection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Test {
public static void test_conn() {
Connection conn = DBUtil.getConnection();
System.out.println(conn);
}
public static void test_addUser() {
UserDao dao = new UserDao();
try {
User user1 = new User("张三","888888","",
new SimpleDateFormat("YYYY-MM-DD").parse("1986-10-11"));
User user2 = new User("李四","999999","",
new SimpleDateFormat("YYYY-MM-DD").parse("1988-10-23"));
User user3 = new User("王五","777777","",
new SimpleDateFormat("YYYY-MM-DD").parse("1988-10-23"));
dao.addUser(user1);
dao.addUser(user2);
dao.addUser(user3);
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void test_updateUser() {
UserDao dao = new UserDao();
User user = new User("张三","888888","",new Date());
dao.updateUser(user);
}
public static void test_deleteUserByName() {
UserDao dao = new UserDao();
dao.deleteUserByName("李四");
}
public static void main(String[] args) {
// test_conn();//连接测试
// test_addUser();//添加测试
// test_updateUser();//更新测试
test_deleteUserByName();//删除测试
}
}
博主为咯学编程:父母不同意学编程,现已断绝关系;恋人不同意学编程,现已分手;亲戚不同意学编程,现已断绝来往;老板不同意学编程,现已失业三十年。。。。。。如果此博文有帮到你欢迎打赏,金额不限。。。
上一篇:最“热乎”的Java社招面试经历分享(共40个面试题)
下一篇:java题库
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-03-26
2022-02-14