首页 > 技术文章 > JDBC-statement对象细节

almost-mujin 2016-09-16 20:55 原文

package cn.mujin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;



import org.junit.Test;

public class demo_1 {
    @Test
    //execute      原始,增删改查都可以,当返回值为true时,有查询结果集。当返回值为false时,没有查询结果集。
    //executeBatch        批量执行
    //executeUpdate        执行增删改
    //executeQuery            执行查询
    public void fun1() throws Exception{
        //1、导入驱动类库
        //2、注册驱动
        //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Class.forName("com.mysql.jdbc.Driver");  
        //3、建立连接
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","root","123456");
        //4、操作数据库
        Statement st=conn.createStatement();
        String sql="INSERT INTO `t_user` (`id`, `name`, `age`)VALUES (NULL, 'jerry', '18')";
        st.execute(sql);
        
        //5、关闭资源
        st.close();
        conn.close();
    }
    
    @Test
    public void fun2() throws Exception{
        //1、导入驱动类库
        //2、注册驱动
        //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Class.forName("com.mysql.jdbc.Driver");  
        //3、建立连接
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","root","123456");
        //4、操作数据库
        Statement st=conn.createStatement();
        String sql="INSERT INTO `t_user` (`id`, `name`, `age`)VALUES (NULL, 'jerry', '18')";
        int row=st.executeUpdate(sql); //返回影响的行数
        
        //5、关闭资源
        st.close();
        conn.close();
    }
    
    public void fun3() throws Exception{
        //1、导入驱动类库
        //2、注册驱动
        //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Class.forName("com.mysql.jdbc.Driver");  
        //3、建立连接
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","root","123456");
        //4、操作数据库
        Statement st=conn.createStatement();
        String sql="SELECT  * FROM  t_user";
        
        
        ResultSet rs=st.executeQuery(sql);
        //遍历rs
        System.out.println(rs);
        
        //5、关闭资源
        st.close();
        conn.close();
    }




}

该对象可以理解为一个 向数据库运送sql语句的 "小车";
方法:
void addBatch(String sql) 向车上添加语句. (用于批量执行sql语句); insert update delete
int[] executeBatch() 将车上的语句 运送给数据库执行. 返回值存放每个语句执行后影响的行数. 因为是多个语句,所以用数组装.
void clearBatch() 清除车上的语句.
----以上3个方法是批量执行sql相关的(下午最后一节课演示)----------------------
boolean execute(String sql) 执行一个sql语句. 如果该语句返回结果集 返回值为true(select). 如果该语句不返回结果集 返回false(insert update delete);
ResultSet executeQuery(String sql) 执行一个有结果集的查询. 会将结果集包装到resultset对象中.(select)
int executeUpdate(String sql) 执行一个没有结果集的语句. 会将语句影响的行数返回.(insert update delete)

结论:
执行查询语句时使用: executeQuery方法
执行增删改等语句时使用: executeUpdate方法

 

特别注意:

  1、 Class.forName("com.mysql.jdbc.Driver");  要注意这里不是Driver();

  2、 在写sql语句时要特别注意:空格问题,严格按照格式来书写。

推荐阅读