jdbc学习总结1---原始的CRUD

  1. 云栖社区>
  2. 博客>
  3. 正文

jdbc学习总结1---原始的CRUD

技术小胖子 2017-11-10 15:37:00 浏览567
展开阅读全文

 1.对JDBC的介绍:

 


  1. package com.hanchao.jdbc; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.PreparedStatement; 
  6.  
  7. /** 
  8.  * jdbc的测试类 
  9.  * @author hanlw 
  10.  * 2012-07-09 
  11.  */ 
  12. public class TestJDBC { 
  13.  
  14.     /** 
  15.      * 一.对jdbc的介绍: 
  16.      *  
  17.      * 1.jar包:相当于驱动。 
  18.      *  
  19.      * 2.Connection 接口: 此接口用于连接数据库。 
  20.      *  
  21.      * 3.DriverManager 类: 用于加载各种数据库驱动程序,并建立和数据的连接。 
  22.      *  
  23.      * 4.Statement 接口:执行SQL语句并将数据检索到ResultSet中。 
  24.      *  
  25.      * 5.ResultSet 接口: 数据库结果数据表。通常由执行查询数据库语句产生!! 
  26.      *  
  27.      * 6.PreparedStatement 接口:执行预编译的SQL语句; 
  28.      *  
  29.      * 7.使用JDBC的步骤: 
  30.      * 加载数据库驱动 → 获取数据库的连接 → 获取对象 → 执行SQL语句 → 操作结果集 → 释放资源 
  31.      * @throws Exception  
  32.      *  
  33.      */ 
  34.      
  35.     /** 
  36.      * 1.插入数据时jdbc写法: 
  37.      */ 
  38.     public static void main(String[] args) throws Exception { 
  39.          
  40.         //1.加载数据库驱动 
  41.         Class.forName("com.mysql.jdbc.Driver");//括号里是:数据库驱动类的完全限定名 
  42.          
  43.         //2.获取数据库的连接 
  44.         Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root");  
  45.         /** 
  46.          * 注意事项:Connection来自于java.sql.Connection;mydb是数据库名称; 
  47.          * root分别是数据库连接的用户名和密码,3306是mysql的端口号。 
  48.          *  
  49.          * 说明:jdbc:mysql://127.0.0.1:3306/mydb 还可以写成下面的形式: 
  50.          *     jdbc:mysql://localhost:3306/mydb  
  51.          *      
  52.          *     如果是本机的话:只能是本机且端口号为3306的情况,还可以写成下面的形式: 
  53.          *     jdbc:mysql:///mydb 
  54.          */ 
  55.  
  56.         //3.获取PreparedStatement对象 
  57.         String sql = "insert into t_user(username,address) values('chenchen','yancheng中')"
  58.         //String sql = "insert into t_student(name) values('中文')"; 
  59.          
  60.         PreparedStatement sta = con.prepareStatement(sql); 
  61.         /** 
  62.          * 注意事项:PreparedStatement来自于java.sql.PreparedStatemet 
  63.          */ 
  64.          
  65.         //4.执行SQL语句 
  66.         int rows = sta.executeUpdate(); 
  67.         if(rows > 0) { 
  68.             System.out.println("操作成功!"); 
  69.         } 
  70.          
  71.         //释放资源 
  72.         sta.close(); 
  73.         con.close(); 
  74.         /** 
  75.          * 注意事项:要先关闭sta,再关闭con 
  76.          */ 
  77.          
  78.     } 

上面的代码有时候,中文进入mysql数据时会变成问号,你可以用下面的代码:

 


  1. package com.hanchao.jdbc; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.PreparedStatement; 
  6.  
  7. /** 
  8.  * jdbc的测试(解决一下,插入中文乱码的问题) 
  9.  * @author hanlw 
  10.  * 2012-07-05 
  11.  */ 
  12. public class TestJDBC2 { 
  13.  
  14.     public static void main(String[] args) throws Exception { 
  15.          
  16.         String hostip = "127.0.0.1"//还可以加上端口号:String hostip = "127.0.0.1:3306"; 
  17.         String DBname = "mydb"
  18.         String user = "root"
  19.         String passwd = "root"
  20.          
  21.         //1.加载数据库驱动 
  22.         Class.forName("com.mysql.jdbc.Driver").newInstance(); 
  23.          
  24.         //2.获取数据库的连接 
  25.         Connection con=DriverManager.getConnection("jdbc:mysql://"+hostip +"/"+DBname+"?user="+user+"&password="+passwd+"&useUnicode=true&characterEncoding=utf-8"); 
  26.         /** 
  27.          * 即:jdbc:mysql://127.0.0.1/mydb?user=root&password=root&useUnicode=true&characterEncoding=utf-8 
  28.          */ 
  29.          
  30.         //3.获取PreparedStatement对象 
  31.         String sql = "insert into t_user(username,address) values('hanchao','America')"
  32.          
  33.         PreparedStatement sta = con.prepareStatement(sql); 
  34.         /** 
  35.          * 注意事项:PreparedStatement来自于java.sql.PreparedStatemet 
  36.          */ 
  37.          
  38.         //4.执行SQL语句 
  39.         int rows = sta.executeUpdate(); 
  40.         if(rows > 0) { 
  41.             System.out.println("操作成功!"); 
  42.         } 
  43.          
  44.         //释放资源 
  45.         sta.close(); 
  46.         con.close(); 
  47.         /** 
  48.          * 注意事项:要先关闭sta,再关闭con 
  49.          */ 
  50.          
  51.     } 

2.jdbc对mysql的update操作:

 


  1. package com.hanchao.jdbc; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.PreparedStatement; 
  6.  
  7. /** 
  8.  * jdbc操作mysql的删除操作 
  9.  * @author hanlw 
  10.  * 2012-07-08 
  11.  */ 
  12. public class TestDelete { 
  13.  
  14.     public static void main(String[] args) throws Exception { 
  15.         //1.加载数据库驱动 
  16.         Class.forName("com.mysql.jdbc.Driver"); 
  17.         //2.获得数据库的连接 
  18.         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root"); 
  19.         //3.获得PreparedStatement对象 
  20.         String sql = "delete from t_user where id=11"
  21.         PreparedStatement sta = con.prepareStatement(sql); 
  22.         //4.执行SQL语句 
  23.         int rows = sta.executeUpdate(); 
  24.         if(rows > 0) { 
  25.             System.out.println("operate successufully!"); 
  26.         } 
  27.         //5.释放资源 
  28.         sta.close(); 
  29.         con.close(); 
  30.      
  31.     } 

3.jdbc对mysql的delete操作:

 


  1. package com.hanchao.jdbc; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.PreparedStatement; 
  6.  
  7. /** 
  8.  * jdbc操作mysql的删除操作 
  9.  * @author hanlw 
  10.  * 2012-07-08 
  11.  */ 
  12. public class TestDelete { 
  13.  
  14.     public static void main(String[] args) throws Exception { 
  15.         //1.加载数据库驱动 
  16.         Class.forName("com.mysql.jdbc.Driver"); 
  17.         //2.获得数据库的连接 
  18.         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root"); 
  19.         //3.获得PreparedStatement对象 
  20.         String sql = "delete from t_user where id=11"
  21.         PreparedStatement sta = con.prepareStatement(sql); 
  22.         //4.执行SQL语句 
  23.         int rows = sta.executeUpdate(); 
  24.         if(rows > 0) { 
  25.             System.out.println("operate successufully!"); 
  26.         } 
  27.         //5.释放资源 
  28.         sta.close(); 
  29.         con.close(); 
  30.      
  31.     } 

4.jdbc对mysql的查询操作:注意写法有点不同了啊!!

 


  1. package com.hanchao.jdbc; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.PreparedStatement; 
  6. import java.sql.ResultSet; 
  7.  
  8. /** 
  9.  * jdbc操作Mysql的查询操作 
  10.  * @author hanlw 
  11.  * 2012-07-09 
  12.  */ 
  13. public class TestRetrieve { 
  14.  
  15.     public static void main(String[] args) throws Exception { 
  16.          
  17.         //1.加载数据库驱动 
  18.         Class.forName("com.mysql.jdbc.Driver"); 
  19.          
  20.         //2.获得数据库的连接 
  21.         Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root"); 
  22.          
  23.         //3.获得PreparedStatement对象 
  24.         String sql = "select id,username,address from t_user"
  25.         PreparedStatement sta = con.prepareStatement(sql); 
  26.          
  27.         //4.执行SQL语句 
  28.         ResultSet rs = sta.executeQuery(); //resultSet是来自于java.sql.ResultSet 
  29.         while(rs.next()) { 
  30.             int id = rs.getInt("id"); 
  31.             String username = rs.getString("username"); 
  32.             String address = rs.getString("address"); 
  33.             System.out.println(id+"\t"+username+"\t"+address); 
  34.         } 
  35.          
  36.         /** 
  37.          * 对next()方法的说明: 
  38.          * next() → 将光标从当前位置向前移一行。ResultSet光标最初位于第一行之前; 
  39.          * 第一次调用next()方法是第一行成为当前行;第二次调用使第二行成为当前行,依次类推。 
  40.          * 当调用next()方法返回false时,光标位于最后一行的后面!!! 
  41.          */ 
  42.          
  43.         //5.释放资源 
  44.         rs.close(); 
  45.         sta.close(); 
  46.         con.close(); 
  47.         /** 
  48.          * 注意事项:释放的顺序是rs,sta,con; 
  49.          */ 
  50.     } 

 


     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/925287,如需转载请自行联系原作者





网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注