JDBC从入门到熟练(二)

举报
tea_year 发表于 2021/12/30 01:29:52 2021/12/30
【摘要】 import java.sql.*;import java.util.List;//Dao工厂类public class DaoFactory { private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static Str...

  
  1. import java.sql.*;
  2. import java.util.List;
  3. //Dao工厂类
  4. public class DaoFactory {
  5. private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
  6. private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=News";
  7. private static String sql="insert userInfo values('admin','admin',getdate())";
  8. private static String user="sa";
  9. private static String pwd="sa";
  10. //1.公共方法是获得数据库链接对象
  11. public static Connection getConnection(){
  12. Connection con=null;
  13. try {
  14. Class.forName(driver);//加,连
  15. con=DriverManager.getConnection(url,user,pwd);
  16. } catch (ClassNotFoundException e) {
  17. e.printStackTrace();
  18. } catch (SQLException e) {
  19. e.printStackTrace();
  20. }
  21. return con;//非void都需要return
  22. }
  23. //2.关闭所有方法;有3个参数!,省代码了!!!
  24. public static void closeAll(ResultSet rs,Statement stmt,Connection con){
  25. try {
  26. if(rs!=null){
  27. rs.close();
  28. }
  29. if(stmt!=null){
  30. stmt.close();
  31. }
  32. if(con!=null){
  33. con.close();
  34. }
  35. } catch (SQLException e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. //3.setParams,用来设置预编译语句对象的?占位符的值;
  40. public void setParams(PreparedStatement pstmt,Object[]params){
  41. if(params==null){return; }//return:直接返回,啥也不做;
  42. try {
  43. for(int i=0;i<params.length;i++){
  44. pstmt.setObject(i+1,params[i]);
  45. }
  46. } catch (SQLException e) {//有异常,加上去
  47. e.printStackTrace();
  48. }
  49. }
  50. //4.做公共的更新方法,可以更新所有的基本sql语句;
  51. public int executeUpdate(String sql,Object[]params){
  52. //1.声明对象;是将来工作当中省内存;
  53. Connection con=null;
  54. PreparedStatement pstmt=null;
  55. int count=0; //增删改受影响的行数;
  56. try {
  57. con=this.getConnection();//调用本类的方法;
  58. pstmt=con.prepareStatement(sql);//建对象:预编译对象,?
  59. setParams(pstmt,params);//调用设置?的方法,已经写过了!!!
  60. count=pstmt.executeUpdate();//3.执行;
  61. } catch (SQLException e) {
  62. e.printStackTrace();
  63. }finally{
  64. this.closeAll(null, pstmt, con);
  65. }
  66. return count;
  67. }
  68. //5.执行查询方法;
  69. public static List executeQuery(String sql, Object[] params) {
  70. Connection con = null;
  71. PreparedStatement pstmt = null;
  72. ResultSet rs = null;
  73. int colCount = 0;
  74. ArrayList tableList=new ArrayList();//表集合
  75. try {
  76. con = getConnection();
  77. pstmt = con.prepareStatement(sql);
  78. setParams(pstmt, params);
  79. rs = pstmt.executeQuery();// 执行查询,结果给rs
  80. ResultSetMetaData rd = rs.getMetaData();// 获得元数据
  81. colCount = rd.getColumnCount();
  82. while (rs.next()) {
  83. ArrayList rowList = new ArrayList();//行集合
  84. for (int i = 1; i <= colCount; i++) {
  85. rowList.add(rs.getString(i));
  86. }
  87. tableList.add(rowList);
  88. }
  89. } catch (SQLException e) {
  90. e.printStackTrace();
  91. }finally{
  92. closeAll(rs,pstmt,con);
  93. }
  94. return tableList;
  95. }
  96. }
Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; int colCount = 0; ArrayList tableList=new ArrayList();//表集合 try { con = getConnection(); pstmt = con.prepareStatement(sql); setParams(pstmt, params); rs = pstmt.executeQuery();// 执行查询,结果给rs ResultSetMetaData rd = rs.getMetaData();// 获得元数据 colCount = rd.getColumnCount(); while (rs.next()) { ArrayList rowList = new ArrayList();//行集合 for (int i = 1; i <= colCount; i++) { rowList.add(rs.getString(i)); } tableList.add(rowList); } } catch (SQLException e) { e.printStackTrace(); }finally{ closeAll(rs,pstmt,con); } return tableList; } }

DAO接口


  
  1. import java.util.List;
  2. //针对UserInfo的增删改查接口;
  3. public interface UserInfoDAO {
  4. public int insertUserInfo(UserInfo user); //saveXXX
  5. public int updateUserInfo(UserInfo user);
  6. public int deleteUserInfo(UserInfo user);
  7. public List<UserInfo>queryUserInfo();//查询学生方法
  8. }

//实现类

  在线课堂:https://edu.csdn.net/lecturer/1516 


  
  1. import java.util.List;
  2. public class UserInfoDAOImpl extends DaoFactory implements UserInfoDAO {
  3. @Override
  4. public int deleteUserInfo(UserInfo user) {
  5. return 0;
  6. }
  7. /* (non-Javadoc)
  8. * @see 插入方法,重写
  9. */
  10. @Override
  11. public int insertUserInfo(UserInfo user) {
  12. int result=0;
  13. String sql="";
  14. Object[]params=;
  15. result=super.executeUpdate(sql, params);
  16. return result;
  17. }
  18. @Override
  19. public List<UserInfo> queryUserInfo() {
  20. String sql="select * from userinfo";
  21. List list=DaoFactory.executeQuery(sql, null);
  22. return list;
  23. }
  24. @Override
  25. public int updateUserInfo(UserInfo user) {
  26. return 0;
  27. }
  28. }
List list=DaoFactory.executeQuery(sql, null); return list; } @Override public int updateUserInfo(UserInfo user) { return 0; } }

 

测试类

 

 


  
  1. package nan;
  2. import java.util.List;
  3. public class Test {
  4. public static void main(String[] args) {
  5. UserInfoDAO udd=new UserInfoDAOImpl();
  6. List tableList=udd.queryUserInfo();
  7. for(int i=0;i<tableList.size();i++){
  8. List rowList=(List)tableList.get(i);
  9. //cann't from Object to List,必须强转
  10. for(int j=0;j<rowList.size();j++){
  11. System.out.print(rowList.get(j)+"\t");
  12. }
  13. System.out.println();//每行完毕后换行
  14. }
  15. }
  16. }

 

 

 

 

 

 

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/52875860

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。