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的更多相关文章

  1. 逆袭之旅DAY.XIA.Object中常用方法

    2018-07-31

  2. 逆袭之旅DAY30.XIA.集合

    2018年7月26日 面试题:List和set的区别 ArrayList 遍历效率较高,但添加和删除较慢 遍历集合最高效的方法:迭代器 集合的遍历: 迭代器:Iterator 创建 为什么使用泛型: ...

  3. 逆袭之旅DAY28.XIA.异常处理

    2018-07-24  14:42:24 第一种: 第二种: 第三种:  执行 try--catch--finally--return(执行return  退出方法) 代码示例: 输入数字,输出对应课 ...

  4. 逆袭之旅DAY24.XIA.二重进阶、双色球

    一. 选择题. 1. 以下关于二重循环的说法正确的是(D). A. 二重循环就是一般程序中只能有两个循环 B. While循环不能嵌套在for循环里 C. 两个重叠的循环不能嵌套在第三个循环里. D. ...

  5. 逆袭之旅DAY24.XIA.数组练习

    2018-07-20 08:40:19 1. public void stringSort(){ String[] s = new String[]{"George"," ...

  6. 逆袭之旅DAY20.XIA.程序调试

    2018-07-16 20:25:50 F5:进入方法 F6:单步执行

  7. 逆袭之旅DAY20.XIA.循环结构

    2018-07-16 19:53:47 while循环 do do...while循环 for 循环

  8. 逆袭之旅DAY20.XIA.选择结构

    2018-07-16  18:50:49 本章目标: 基本if选择结构 逻辑运算符 多重if选择结构 嵌套if选择结构 什么是if选择结构: if选择结构是根据条件判断之后再做处理 import ja ...

  9. 逆袭之旅DAY20.xia.师父指导.数据类型

    2018-07-16  09:35:57 基础是王道 从码农--软件工程师--软件架构师 String 首字母大写,特殊引用类型,常量类 二.数组 存钱罐(只能放钱) 数据兼容 数组的长度(定义后长度 ...

随机推荐

  1. Vue 中 export及export default的区别

    相信很多人都在vue使用过export.export default.import,然而它们到底有什么区别呢? 在ES6中,export与export default均可用于导出常量.函数.文件.模块 ...

  2. Java HashMap 遍历、删除、排序

    首先创建一个map对象,并依次放入几个测试数据 HashMap<String, Integer> map = new HashMap<String, Integer>(); m ...

  3. Linux中系统检测工具top命令

    Linux中系统检测工具top命令 本文转自:https://www.cnblogs.com/zhoug2020/p/6336453.html 首先介绍top中一些字段的含义: VIRT:virtua ...

  4. clustering

    搞了将近一年的单细胞,聚类也是自认为得心应手了,自信满满. 但是多半是跑软件,对聚类的深层次的思想不甚了了. Google了一下clustering,看了一篇文章,突然了解到了clustering的算 ...

  5. LeetCode--415--字符串相加

    问题描述: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和nu ...

  6. p1468 Party Lamps

    就是模拟.同一个开关按2下相当于没按,那么,如果一共按0下,就是没按,按1下就是4个开关的1个,按2下可能相当于实际按了0下或按2下,按3下实际按了1下或3下,之后如果是奇数,相当于按1或3下,偶数相 ...

  7. webpack+vue多入口环境搭建

    项目地址:https://pan.baidu.com/s/1c1Dflp2 使用前提:安装nodejs环境,webpack的配置官网的例子跟着跑一遍,会vue开发 研究webpack+vue研究了一个 ...

  8. android -------- 解决NDK开发中的 Method 'NewStringUTF' could not be resolved

    创建NDK项目时, .cpp文件中出现错误, Method 'NewStringUTF' could not be resolved 如图: 网上看了很多解决方式 项目右键->属性->c/ ...

  9. django 中基于类的视图

    django 视图 分为两种: 1.  FBV  基于函数的视图      function   based  view 2.  CBV  基于类的视图         class   based  ...

  10. php的符号的排序大小