JDBC+MySQL入门增删改查实战( 四 )

其中通过Connection建立连接,Connection是一个接口类 。其功能是与数据库进行连接(会话) 。建立Connection接口类对象:Connection conn =DriverManager.getConnection(url, user, password);其中url的格式要求为:

  • jdbc:mysql://:/?property1=value1&property2=value2…
  • host为主机地址或者域名,本地可以用localhost或127.0.0.1.
  • database_name为MySQL中创建数据库名,本案例中数据库名为boxuegu 。
  • property用来配置一些例如编码、时区等属性 。
其中user为MySQL登录用户名,password为MySQL登录密码 。
单个插入MySQL插入的sql语句很简单:
insert into  表名( 字段1, 字段2,...字段n)value( 值1, 值2,...值n );我们JDBC中进行插入操作使用的sql满足上述规范,在sqlmanage中编写insertStudent(student student)函数用来插入单个学生记录,具体函数如下:
 public  void insertStudent(student student) throws SQLException {        //创建sql语句        String sql="insert into student(name,age,high)value(?,?,?)";        //PreparedStatement能够对SQL语句进行预编译,这样防止了   SQL注入 提高了安全性 。        PreparedStatement ps = con.prepareStatement(sql);        ps.setString(1,student.getName());        ps.setInt(2,student.getAge());        ps.setInt(3,student.getHigh());        //执行 sql 因为这里插入操作就不对结处理        ps.executeUpdate();        ps.close();    }在test类中的编写insertTest()函数,用来测试插入三条学生的记录:
@Testpublic void insertTest() throws SQLException, ClassNotFoundException {      sqlmanage sqlmanage=new sqlmanage();      sqlmanage.insertStudent(new student("bigsai",22,180));      sqlmanage.insertStudent(new student("bigpian",21,165));      sqlmanage.insertStudent(new student("doudou",20,160));  }执行完毕刷新navicat中student表你会发现数据被成功插入了:
JDBC+MySQL入门增删改查实战

文章插图
 
批量插入如果同时有100组数据或者更多若干组数据让你插入你会怎么操作?
  • 循环一个一个的插入
  • 批处理一次插入多个
    批量处理相比循环的单个单个处理起来省了很多时间,提高了系统效率 。所以当遇到较多数据时可以选择多个插入 。
批量插入实现也很容易,在sqlmanage中编写insertStudents(student students[])函数用来批量插入学生记录:
 public void insertStudents(student students[]) throws SQLException {        this.con.setAutoCommit(false);//不自动提交        String sql="insert into student(name,age,high)value(?,?,?)";        PreparedStatement ps =con.prepareStatement(sql);        for(int i=0;i<students.length;i++)        {            ps.setString(1,students[i].getName());            ps.setInt(2,students[i].getAge());            ps.setInt(3,students[i].getHigh());            ps.addBatch();            if(i%1000==0)            {                ps.executeBatch();            }        }        ps.executeBatch();        con.commit();        ps.close();    }其中: