JDBC学习笔记

来源:互联网 发布:淘宝权重怎么做上去 编辑:程序博客网 时间:2024/05/16 04:59
连接数据的步骤
1.注册驱动
2.建立连接
3.创建执行SQL的语句(Statement)
4.执行语句
5.处理执行结果(ResultSet)
6.释放资源
Java代码 复制代码 收藏代码
  1. public static void main(String[] args) throws ClassNotFoundException, SQLException{   
  2.        
  3.      //1.注册驱动   
  4.      //DriverManager.registerDriver(new com.mysql.jdbc.Driver());  
  5.      //System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver : com.oracle.jdbc.Driver");  
  6. Class.forName("com.mysql.jdbc.Driver");   
  7.         
  8.      //2.建立连接   
  9.      Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","");   
  10.        
  11.      //3.创建语句   
  12.      Statement st = conn.createStatement();   
  13.         
  14.      //4.执行语句   
  15.      ResultSet rs = st.executeQuery("select * from user");   
  16.         
  17.      //5.处理结果   
  18.      while(rs.next()){   
  19.          System.out.println(rs.getObject(1)+" "+rs.getObject(2));   
  20.      }   
  21.         
  22.      //6.释放连接   
  23.      rs.close();   
  24.      st.close();   
  25.      conn.close();   
  26.         
  27.     }  


建立连接的URL格式:
JDBC:子协议:子名称//主机名:端口号/数据库名?属性1=属性值&...
主机名和端口号如果是本机和默认端口号,就可也省略。

预处理执行sql
Java代码 复制代码 收藏代码
  1. String sql = "select id,name from user where name=?";   
  2. //预处理sql,防止sql注入   
  3. PreparedStatement ps = conn.prepareStatement(sql);   
  4. ps.setString(1"张三");          
  5. //执行语句   
  6. ResultSet rs = ps.executeQuery();  


插入CLOB数据
Java代码 复制代码 收藏代码
  1. String sql = "insert into clob_test(big_text) values(?)";   
  2.          PreparedStatement ps = conn.prepareStatement(sql);   
  3.          File file = new File("filename");   
  4.          Reader reader = new BufferedReader(new FileReader(file));   
  5.          //设置大文本流   
  6.          ps.setCharacterStream(1,reader);           
  7.          //执行语句   
  8.         ps.executeUpdate();  


读取CLOB数据
Java代码 复制代码 收藏代码
  1. String sql = "select big_test from clob_test";   
  2.          PreparedStatement ps = conn.prepareStatement(sql);   
  3.          ResultSet rs = ps.executeQuery();   
  4.            
  5.          while(rs.next()){   
  6.              Clob clob = rs.getClob(1);   
  7.              Reader reader = clob.getCharacterStream();   
  8.              //reader = rs.getCharacterStream(1);  
  9.                 
  10.              //拿到reader就可以做一些事   
  11.          }  


可以返回主键的操作
Java代码 复制代码 收藏代码
  1. String sql = "insert into user(name) values('aa')";   
  2.          //可以返回主键   
  3.          PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//根据传的不同参数,可以有不同的功能  
  4.          ps.executeUpdate();   
  5.            
  6.          ps.getGeneratedKeys();//获取主键  


批处理执行
Java代码 复制代码 收藏代码
  1. String sql = "insert into user(name) values('aa')";   
  2.      PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);   
  3.     
  4.      ps.addBatch();   
  5.      ps.executeBatch();  


可滚动的结果集
Java代码 复制代码 收藏代码
  1. String sql = "select * from user";   
  2.      //创建可滚动的结果集,第二个参数是关于并发的   
  3.      PreparedStatement ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);   
  4.      ResultSet rs = null;   
  5.      rs = ps.executeQuery();   
  6.         
  7.      //绝对定位   
  8.      rs.absolute(5);   
  9.      if(rs.previous()){}  


获取数据库的元数据(其他元数据获取同理,如ResultSet.getMetaData())
Java代码 复制代码 收藏代码
  1. Connection conn = null;   
  2. DatabaseMetaData dbmd = conn.getMetaData();   
  3. dbmd.getDatabaseProductName();//获取数据库名字  

获取PreparedStatement 的元数据
Java代码 复制代码 收藏代码
  1. String sql = "select * from user where a=?,b=?";   
  2.      PreparedStatement ps = conn.prepareStatement(sql);   
  3.      ParameterMetaData pmd = ps.getParameterMetaData();   
  4.      //获取参数个数   
  5.      int count = pmd.getParameterCount();   
  6.         
  7.      //获取第一个参数的信息,mysql没有很好实现这些接口,不同的驱动有不同的实现  
  8.      pmd.getParameterClassName(1);//参数类名,java.lang.String  
  9.      pmd.getParameterType(1);//参数类型,12  
  10.      pmd.getParameterTypeName(1);//参数数据库类型名字,VARCHAR  
原创粉丝点击