Java使用jdbc操作mysql数据库

一、连接数据库

1.     加载驱动,首先应该引入jar包,如果你使用shell(如cmd命令下的javac)来编译的话,你应该确保classpath中加入了jar包的路径。如果你使用eclipse的话,你要在项目中配置jar包。

2.     使用jdbc加载驱动:

Class.forName(驱动类);

Mysql的驱动类:org.gjt.mm.mysql.Driver

3.     建立Connection对象:

Connection conn=null;

conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);

mysql的连接ULR形如: jdbc:mysql://localhost:3306/test

4.     连接完成,当操作完成后,应确保conn关闭:

conn.close();

二、读取数据

1.     建立Connection对象

2.     使用Connection对象的createStatement方法建立Statement对象

Statement st=conn.CreateStatement();

3.     使用ResultSet保存Statement的executeQuery方法返回的数据:

ResultSet rs=null;

rs=st.executeQuery(sql);

4.     使用ResultSet的next方法来判断数据是否存在,使用ResultSet的getXXX(字段名|索引)方法来获取数据(注意,如果使用索引,索引从1开始)

while(rs.next()){

      System.out.println(rs.getInt(1));

}

5.依次关闭ResultSet

关闭Statement

关闭Connection

三、更新数据

1.建立Connection对象

2.使用Connection对象的preparedStatement的方法建立PreparedStatement对象

PreparedStatemnet pre=conn.PreparedStatement(“insert into table(name) values(?)”);

3.使用PreparedStatement对象的setXXX方法,附加值

pre.SetString(1,”hi”);

5.     使用pre对象的executeUpdate方法更新数据

pre.executeUpdate();

6.     依次关闭PreparedStatement对象和Connection对象

四、使用Statement更新固定数据

Connection conn=null;

Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);

Statement statement=conn.createStatement();

String sql="delete from test where id=1974";

statement.executeUpdate(sql);

statement.close();

conn.close();

五、批处理

使用PreparedStatement的addBatch方法增加批处理,使用PreparedStatement的executeBatch()来更新数据。示例代码如下:

Connection conn=null;

     Class.forName(DBDRIVER);

      conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);

     PreparedStatement pre=conn.prepareStatement("insert into test"+

          "(name,age) values(?,?)");

     for(int i=1;i<10;i++){

        pre.setString(1, "guoxu"+i);

        pre.setInt(2, 100+i);

        pre.addBatch();

     }

     int[] t=pre.executeBatch();

     System.out.println(t.length);

     pre.close();

     conn.close();

六、事务处理

事务处理是指提交一批数据,如果成功,则提交,如果失败则可以回滚。事物处理首先需要将自动提交设为false.如:conn.setAutoCommit(false);然后try,如果成功,则conn.commit();如果失败,则conn.rollback();

但需要注意的是,对事务的处理同样需要数据表的支持,mysql的myisam不支持事务,innodb支持事务。所以需要将数据表类型改为InnoDB才可以支持事务。

示例代码如下:

Connection conn=null;

     Class.forName(DBDRIVER);

      conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);

     conn.setAutoCommit(false);

     Statement pre=conn.createStatement();

     try{

        pre.addBatch("insert into test(name,age) values('guoxu',25)");

        pre.addBatch("insert into test(name,age) values('lisi',25)");

        pre.addBatch("insert into test(name,age) values('wagnwu',25)");

        pre.addBatch("insert into test(name,age) values('zhaoliu',25)");

        int[] l=pre.executeBatch();

        System.out.println(l.length);

        conn.commit();

     }catch(Exception e){

        conn.rollback();

     }

     pre.close();

     conn.close();