反射之前奏Oracle升级版
来源:互联网 发布:u盘数据恢复公司 编辑:程序博客网 时间:2024/05/16 07:54
利用接口来提高扩展性
Student表的属性和帮助方法
public class Student { private int id; private String name; private String sex;//构造方法 public Student() { } public Student(int id, String name, String sex) { super(); this.id = id; this.name = name; this.sex = sex; }//get和set方法 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }//重写toTring方法 @Override public String toString() { return "id=" + id + ", name=" + name + ", sex=" + sex; }}
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class JdbcHelp {//需要用到的String参数 private static String driver = "oracle.jdbc.driver.OracleDriver"; private static String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; private static String user = "Scott"; private static String password = "tiger";/*单例的懒汉式1、定义一个实例JdbcHelp Instance2、私有化构造方法,使得别人不能new一个对象;3、判断,在本类new一个对象*/ private static JdbcHelp Instance; private JdbcHelp() { } public static JdbcHelp getInstance() { if (Instance == null) { Instance = new JdbcHelp(); } return Instance; } // 加载驱动,因为是格式不变且共享,所以单独放一个静态块里 static { try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("驱动加载失败异常"); } }// 连接Oracle方法 public static Connection getconn() { try { return DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); System.out.println("连接失败异常"); return null; } } // 关闭方法,主要用到两种,这里用到重载 public static void close(Connection conn, PreparedStatement prep) throws SQLException { if (prep != null && prep.isClosed()) { prep.close();//先关声明 } if (conn != null && conn.isClosed()) { conn.close();//再关连接 } } public static void close(Connection conn, PreparedStatement prep, ResultSet rSet) throws SQLException { if (rSet != null && rSet.isClosed()) { rSet.close();//先关查询 } close(conn, prep); }}
增删改查接口
public interface InterStu {// 1、查询Student所有信息 public List<Student> getStu() ; // 2、根据学生id查出其信息 public Student getId1(int Id); // 3、根据name查出其信息 public Student getName1(String name); // 4、修改student信息update public void updateStu(Student stu); // 5、删除student信息delete public void deleteStu(int Id); // 6、增加student信息add用insert into public void addStu(Student stu);}
实现接口并且单独添加了一个dml和查询方法
package JdbcSimple;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class ImpStudentSelect implements InterStu { // 单例 private static ImpStudentSelect Instance; private ImpStudentSelect() { } public static ImpStudentSelect getInstance() { if (Instance == null) { Instance = new ImpStudentSelect(); } return Instance; } private JdbcHelp jh = JdbcHelp.getInstance(); private Connection conn; private PreparedStatement prep; private ResultSet rSet; // dml方法也就是增删改方法,利用数组来设置prep的内容 public void dml(String sql, String[] args) { try { // 连接 conn = jh.getconn(); // 操作 prep = conn.prepareStatement(sql); // 判断数组非空,并且长度大于0,将传入的数组用循环来加到prep上 if (args != null && args.length > 0) { int size = args.length; if (size > 0) { for (int i = 0; i < size; i++) { prep.setString(i + 1, args[i]); } } } prep.execute(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { JdbcHelp.close(conn, prep); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); conn = null; prep = null; } } } public List<Student> Select(String sql) { List<Student> list = new ArrayList<Student>(); try { conn = jh.getconn(); prep = conn.prepareStatement(sql); rSet = prep.executeQuery(); while (rSet.next()) { Student stu = new Student(); stu.setId(rSet.getInt(1)); stu.setName(rSet.getString(2)); stu.setSex(rSet.getString(3)); list.add(stu); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { JdbcHelp.close(conn, prep, rSet); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); conn = null; prep = null; rSet = null; } } return list; }//========================================================================================================= @Override public List<Student> getStu() { // TODO Auto-generated method stub return null; } @Override public List<Student> getId1(int Id) { // TODO Auto-generated method stub String sql = "select * from student where id=" + Id; return Select(sql); } @Override public Student getName1(String name) { // TODO Auto-generated method stub return null; } @Override public void updateStu(Student stu) { String sql = "update student set name=?,sex=? where id=?"; String[] args = { stu.getName(), stu.getSex(), String.valueOf(stu.getId()) }; dml(sql, args); } @Override public void deleteStu(int Id) { // TODO Auto-generated method stub } @Override public void addStu(Student stu) { // TODO Auto-generated method stub }}
测试方法大致相同
public class StudentTest { public static void main(String args[]) { //查询一个 ImpStudentSelect stuse1=ImpStudentSelect.getInstance(); ArrayList<Student> stus=(ArrayList<Student>)stuse1.getId1(5); if(stus!=null){ for(Student s:stus){ System.out.println(s); } }//dml方法 Student stu=new Student(); stu.setId(4); stu.setName("榴莲"); stu.setSex("女"); stuse1.updateStu(stu); //add操作stuse1.dml("insert into student values(?,?,?)", new String[]{"9","蓝盾","女"}); }}
0 0
- 反射之前奏Oracle升级版
- 反射之前奏Oracle简单版
- Oracle 10g升级之--PSU升级
- Linq系列之前奏
- webService学习之前奏
- 数据分析之前奏
- 爬虫编写之前奏
- oracle学习笔记 学习前奏
- Oracle Study之--Oracle TimeZone升级
- 前奏
- 前奏!
- 数据仓库北京之行前奏
- 剧本翻译之SHUFFLE【前奏】
- EJB前奏之看看RMI
- 串口编程之前奏篇
- 1.设计模式之前奏
- 串口编程之前奏篇
- STM8单片机学习之前奏
- 任务七:实现常见的技术产品官网的页面架构及样式布局
- 表单-- HTML5
- 运维笔记37 mysql主从自动切换(keepalived+自制脚本)
- 4.输入缓冲
- 模仿tmall 小猫咪的耳朵
- 反射之前奏Oracle升级版
- 5.new和delete
- os 模块
- MySQL学习笔记2.0
- AtCoder Grand Contest 012 A
- iptables学习记录
- 6.引用
- 任务八:响应式网格(栅格化)布局
- 7.函数的默认值