逆袭之旅DAY31.XIA.JDBC
2018-07-31
MySQL
package oop_emp.com.neusoft.dao; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; /**
* 数据库操作基础类
*
* @author xxf
*
*/
public class BaseDao {
// 创建4个常量(数据库连接地址,数据库驱动类地址,数据库登录权限名,登录密码)
private static final String DRIVER="com.mysql.jdbc.Driver";
private static final String URL="jdbc:mysql://localhost:3306/emp?characterEncoding=utf-8";
private static final String UNAME="root";
private static final String UPWD="123456"; // 使用静态块加载数据库的驱动
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 声明三个核心接口对象(Connection,PreparedStatment,ResultSet)
private Connection conn = null;// 数据库连接的对象
private PreparedStatement pstmt = null;// SQL命令预处理并执行操作的对象
protected ResultSet res = null;// 查询后返回的结果集对象
// 编写创建数据库连接对象的方法(DriverManager)
private void getConn() {
try {
conn = DriverManager.getConnection(URL, UNAME, UPWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // 编写关闭数据库释放资源的方法
protected void colseAll() {
if (null != res) {
try {
res.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (null != pstmt) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // 编写数据库的查询方法
protected ResultSet excuteSelect(String sql, Object[] params) {
// 调用数据库连接对象的方法
this.getConn();
// 创建预处理对象
try {
pstmt = conn.prepareStatement(sql);
// 通过for循环对参数进行预处理
if (null != params) {
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
}
// 操作查询并返回结果集
res = pstmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
// 编写数据库的增删改的方法
protected int excuteEdit(String sql,Object[] params){
int count = 0;
//调用数据库连接对象的方法
this.getConn();
try {
//创建SQL命令预处理执行操作的对象
pstmt = conn.prepareStatement(sql);
//对参数进行预处理
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
//接收操作执行返回的行数
count = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
this.colseAll();
}
return count;
} }
public class TestJDBC3
{
public static void main(String[] args)
{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/otherww? useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "123456";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null; String sql = "select name,money,id,age from student"; try
{
// 1,加载驱动
Class.forName(driver);
// 2,获得连接
conn = DriverManager.getConnection(url, user, password);
// 3,获得状态集
pstmt = conn.prepareStatement(sql);
// 4,获得结果集
rs = pstmt.executeQuery();
// 5,处理结果集
while (rs.next())
{
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
double money = rs.getDouble("money");
Student s = new Student();
s.setId(id);
s.setStuName(name);
s.setAge(age);
s.setMoney(money);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//6,释放资源
try
{
if(null != rs)
{
rs.close();
}
if(null != pstmt)
{
pstmt.close();
}
if(null != conn)
{
conn.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
Oracle
package com.neusoft.dao; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; /**
* 数据库操作基础类
*
* @author xxf
*
*/
public class BaseDao {
// 创建4个常量(数据库连接地址,数据库驱动类地址,数据库登录权限名,登录密码)
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
private static final String UNAME = "scott";
private static final String UPWD = "123"; // 使用静态块加载数据库的驱动
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 声明三个核心接口对象(Connection,PreparedStatment,ResultSet)
private Connection conn = null;// 数据库连接的对象
private PreparedStatement pstmt = null;// SQL命令预处理并执行操作的对象
protected ResultSet res = null;// 查询后返回的结果集对象
// 编写创建数据库连接对象的方法(DriverManager)
private void getConn() {
try {
conn = DriverManager.getConnection(URL, UNAME, UPWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // 编写关闭数据库释放资源的方法
protected void colseAll() {
if (null != res) {
try {
res.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (null != pstmt) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // 编写数据库的查询方法
protected ResultSet excuteSelect(String sql, Object[] params) {
// 调用数据库连接对象的方法
this.getConn();
// 创建预处理对象
try {
pstmt = conn.prepareStatement(sql);
// 通过for循环对参数进行预处理
if (null != params) {
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
}
// 操作查询并返回结果集
res = pstmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
// 编写数据库的增删改的方法
protected int excuteEdit(String sql,Object[] params){
int count = 0;
//调用数据库连接对象的方法
this.getConn();
try {
//创建SQL命令预处理执行操作的对象
pstmt = conn.prepareStatement(sql);
//对参数进行预处理
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
//接收操作执行返回的行数
count = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
this.colseAll();
}
return count;
} }
逆袭之旅DAY31.XIA.JDBC的更多相关文章
- 逆袭之旅DAY.XIA.Object中常用方法
2018-07-31
- 逆袭之旅DAY30.XIA.集合
2018年7月26日 面试题:List和set的区别 ArrayList 遍历效率较高,但添加和删除较慢 遍历集合最高效的方法:迭代器 集合的遍历: 迭代器:Iterator 创建 为什么使用泛型: ...
- 逆袭之旅DAY28.XIA.异常处理
2018-07-24 14:42:24 第一种: 第二种: 第三种: 执行 try--catch--finally--return(执行return 退出方法) 代码示例: 输入数字,输出对应课 ...
- 逆袭之旅DAY24.XIA.二重进阶、双色球
一. 选择题. 1. 以下关于二重循环的说法正确的是(D). A. 二重循环就是一般程序中只能有两个循环 B. While循环不能嵌套在for循环里 C. 两个重叠的循环不能嵌套在第三个循环里. D. ...
- 逆袭之旅DAY24.XIA.数组练习
2018-07-20 08:40:19 1. public void stringSort(){ String[] s = new String[]{"George"," ...
- 逆袭之旅DAY20.XIA.程序调试
2018-07-16 20:25:50 F5:进入方法 F6:单步执行
- 逆袭之旅DAY20.XIA.循环结构
2018-07-16 19:53:47 while循环 do do...while循环 for 循环
- 逆袭之旅DAY20.XIA.选择结构
2018-07-16 18:50:49 本章目标: 基本if选择结构 逻辑运算符 多重if选择结构 嵌套if选择结构 什么是if选择结构: if选择结构是根据条件判断之后再做处理 import ja ...
- 逆袭之旅DAY20.xia.师父指导.数据类型
2018-07-16 09:35:57 基础是王道 从码农--软件工程师--软件架构师 String 首字母大写,特殊引用类型,常量类 二.数组 存钱罐(只能放钱) 数据兼容 数组的长度(定义后长度 ...
随机推荐
- 设计模式(一)Chain Of Responsibility责任链模式
设计模式篇章,源于网课的学习,以及个人的整理 在我们接收用户提交的字符时,常常会使用到过滤,在学习责任链模式前,我们是这样做的 1.定义一个类 public class MsgProcesser { ...
- swt-designer安装教程
http://jingyan.baidu.com/article/3f16e003c87b082590c10343.html
- Total Commander
Total Commander 是一款应用于 Windows 平台的文件管理器 ,它包含两个并排的窗口,这种设计可以让用户方便地对不同位置的“文件或文件夹”进行操作,例如复制.移动.删除.比较等,相对 ...
- JAVA实操项目:转账接口设计
在一个项目中,一般都会支付相关的业务,而涉及到支付必定会有转账的操作,转账这一步想起来算是比较关键的部分,这个接口的设计能力,也大致体现出一个人的水平. 昨天碰到了一个题目: 尝试用java编写一个转 ...
- 《剑指offer》第四十三题(从1到n整数中1出现的次数)
// 面试题43:从1到n整数中1出现的次数 // 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如 // 输入12,从1到12这些整数中包含1 的数字有1,10,11和12 ...
- 如何看待Arcsoft虹软,推出的人脸认知引擎免费SDK?
虹软公司是一家具有硅谷背景的图像处理公司,除了人脸技术以外,还有多项图像及视频处理技术.他们的双摄像头处理算法和人脸美化算法囊括了包括OPPO VIVO,SUMAMNG一系列手机厂商. 整个人脸识别运 ...
- Java离线人脸识别SDK 支持arcface 2.0 最新版
虹软人脸识别SDK之Java版,支持SDK 1.1+,以及当前最新版本2.0,滴滴,抓紧上车! JDK SDK Win release license status 前言 由于业务需求,最近跟人脸识别 ...
- 学习笔记33—graphPad画图集
1.如何去掉如下图所示的基准线(baseline): 解决办法:鼠标左键双击基准线 --->出现下图对话框,勾选Hide baseline即可. 2.画柱状图时,如何将正常人和病人的信息画在 ...
- MySQL根据when-else条件批量更新
#类型 0:默认 1:黑(0302) 2:白(0110) SELECT * FROM t_power_plat WHERE plat_type=1; UPDATE t_power_plat SET p ...
- Codeforces 1009 F - Dominant Indices
F - Dominant Indices 思路:树上启发式合并 先跑轻子树,然后清除轻子树的信息 最后跑重子树,不清除信息 然后再跑一遍轻子树,重新加回轻子树的信息 由于一个节点到根节点最多有logn ...