一.JDBC简介

  全名:java database connection

  java代码与数据库相连的工具,java>JDBC>(oracle  mysql sql server)

二.四大件

  • DriverManager:根据不同数据库,调用正确的Driver
  • Connection:由Driver产生,负责数据库的连接
  • Statement:由connection产生,负责传送SQL指令
  • ResultSet:负责接收Statement(sql语句)执行结果

三.JDBC具体步骤

  1. 安装驱动,驱动为一个jar包,mysql的驱动和oracle的驱动不同
  2. 复制到src目录下,build path>addto
  3. 加载驱动-------Class.forName("com.mysql.jdbc.Driver");
  4. 与数据库相连----------Connection con=DriverManager.getConnection(url,user,psw);(此处会发生异常)
  5. 写sql语句---------Statement st=con.createStatement();(异常)
  6. 执行sql语句-----------int rows=st.executeUpdate(sql);//更新操作:此处返回受影响的行数
  7. 关闭四大件-------st.close();con.close();

  以上为更新数据,下面的例子为插入数据,具体代码如下

public class StudentDao{
private Connection con;
private Statement st;
private ResultSet rs;
public void insert(Student s)throws SQLExp{
String sql="insert****";
con=DbUtils.getConnection();
st=con.createStatement();
int rows=st.executeUpdate(sql);
        DbUtils.close(con,st,rs);
return rows;
}
public static void close(Connection con,Statement st,ResultSet rs){
try{
if(con!=null) con.close();
if(st!=null) st.close();
if(rs!=null) rs.close();
}catch(SQLExp e){
syso(连接失败);
e.printStackTrace();
}
}
}

  另有优化的方法PreparedStatement:预编译:可有效防止sql注入

public class StudentDao{
private Connection con;
private PreparedStatement ps;//
private ResultSet rs;
public void insert(Student s)throws SQLExp{
String sql="insert into Student values(?,?,?,?)";
con=DbUtils.getConnection();
ps=con.prepareStatement();
ps.setInt(1,s.getId());
ps.setString(2,s.getName());
ps.setInt(3,s.getAge());
ps.setDouble(4,s.getScore());
int rows=st.executeUpdate(sql);
     DbUtils.close(con,st,rs);
return rows;
}
}

  关于JDBC的批处理,一般用到较少

//传入参数非一个学生,二是一个学生的List数组
for(Student s:l){
String sql="insertXXXX";
st.addBatch(sql);
}
int arr[]=st.executeBatch(); //预编译:
String sql="insert into student values(?,?,?,?)";
ps=con.preparedStatement(sql);
for(Student s:l){
ps.setInt(1,s.getId());
ps.setString(2,s.getName());
ps.addBatch(sql); //批处理
}

  test类

 

StudentDao sd=new StudentDao();
List<Student>l=new ArrayList<Student>();
Student s=new Student(1015,"zhangwenfang",54.2,"sdad");
Student s1=new Student(1004,"zhangwefsng",54.2,"sfdsad");
Student s2=new Student(1003,"zhsfdang",54.2,"gasad");
l.add(s);
l.add(s2);
l.add(s1);
try {
sd.inserts(l);
System.out.print("插入成功");
} catch (SQLException e) {
System.out.println("插入失败");
e.printStackTrace();
}

 四.关于事务

  理解银行转账的过程,要么全成功,要么全失败。你给人转账,你银行得-钱,别人得+钱

  三要素:

  • 保证Connection 是同一个
  • 关闭自动提交
  • 不要忘了手动提交

14JDBC的更多相关文章

  1. 5.14JDBC

    一.##JDBC 1. 概念:Java DataBase Connectivity  Java 数据库连接, Java语言操作数据库. JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数 ...

随机推荐

  1. springmvc核心技术

    目录 异常处理 类型转换器 数据验证 文件上传与下载 拦截器 异常处理 Spring MVC中, 系统的DAO, Service, Controller层出现异常, 均通过throw Exceptio ...

  2. Java 面试题集锦

    都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但 ...

  3. [转] How Bill Gates read books

    Bill Gates is one of the most famous figures in the business world. He is one of the richest men in ...

  4. window.opener和window.open

    window.open (URL,name,specs,replace)方法用于打开一个新的浏览器窗口或查找一个已命名的窗口. URL:可选.打开指定的页面的URL.如果没有指定URL,打开一个新的空 ...

  5. 浅析Hashmap和Hashtable

    一.Hashmap不是线程安全的,而Hashtable是线程安全的 通过查看源码可以发现,hashmap类中的方法无synchronized关键字,而hashtable类中的方法有synchroniz ...

  6. 文件防删除保护(miniifiter)

    0x01 思路(原理) 驱动层文件保护的思路是通过minifilter过滤文件删除相关的IRP,并将目标文件与被保护文件相比较,命中保护规则的话返回STATUS_ACCESS_DENIED拒绝访问:也 ...

  7. 汉诺塔问题-递归实现-JAVA

    public class hanio { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene ...

  8. Oracle数据库 Synonym和DBLink

    1.1数据库创建同义词(synonym) Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没 ...

  9. Cocos2dx 代码中包含中文导致编译错误的问题解决方法

    从网上下载一个cocos2dx的源码,是IOS版本的,我将其迁移到windows 7下 ,用VS2010编译,出现一堆的C2001错误: 1>d:\cocos2d-x-2.2.6\mygame\ ...

  10. 初学者--oracle安装完后出现的一些问题

    对于初学者安装数据库后,立马回运行数据库,看是否安装成功,但oracle安装完成,其中有些都是默认状态,所以需要手动修改和添加.例如这个问题 1.pl/sql developer was not te ...