zoukankan      html  css  js  c++  java
  • Java使用jdbc操作Mysql数据库

    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();

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429539.html
Copyright © 2011-2022 走看看