JDBC从入门到熟练(二)
  TEZNKK3IfmPf 2023年11月12日 22 0
import java.sql.*;
import java.util.List;
//Dao工厂类
public class DaoFactory {
	private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=News";
	private static String sql="insert userInfo values('admin','admin',getdate())";
	private static String user="sa";
	private static String pwd="sa";
	
	//1.公共方法是获得数据库链接对象
	public static Connection getConnection(){
		Connection con=null;
		try {
			Class.forName(driver);//加,连
			con=DriverManager.getConnection(url,user,pwd);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con;//非void都需要return
	}
	//2.关闭所有方法;有3个参数!,省代码了!!!
	public static void closeAll(ResultSet rs,Statement stmt,Connection con){
		try {
			if(rs!=null){
				rs.close();
			}
			if(stmt!=null){
				stmt.close();
			}
			if(con!=null){
				con.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	//3.setParams,用来设置预编译语句对象的?占位符的值;
	public void setParams(PreparedStatement pstmt,Object[]params){
		if(params==null){return; }//return:直接返回,啥也不做;
		try {
			for(int i=0;i<params.length;i++){
				pstmt.setObject(i+1,params[i]);
			}
		} catch (SQLException e) {//有异常,加上去
			e.printStackTrace();
		}
	}
	//4.做公共的更新方法,可以更新所有的基本sql语句;
	public int executeUpdate(String sql,Object[]params){
		//1.声明对象;是将来工作当中省内存;
		Connection con=null;
		PreparedStatement pstmt=null;
		int count=0; //增删改受影响的行数;
		
		try {
			con=this.getConnection();//调用本类的方法;
			pstmt=con.prepareStatement(sql);//建对象:预编译对象,?
			setParams(pstmt,params);//调用设置?的方法,已经写过了!!!
			count=pstmt.executeUpdate();//3.执行;
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			this.closeAll(null, pstmt, con);
		}
		return count;
	}
	//5.执行查询方法;
	public static List executeQuery(String sql, Object[] params) {
		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;
	}
} 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接口

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

//实现类

import java.util.List;


public class UserInfoDAOImpl extends DaoFactory implements UserInfoDAO {

	@Override
	public int deleteUserInfo(UserInfo user) {
		return 0;
	}

	/* (non-Javadoc)
	 * @see 插入方法,重写
	 */
	@Override
	public int insertUserInfo(UserInfo user) {
		int result=0;
		String sql="";
		Object[]params=;
		result=super.executeUpdate(sql, params);
		return result;
	}

	@Override
	public List<UserInfo> queryUserInfo() {
		String sql="select * from userinfo";
		List list=DaoFactory.executeQuery(sql, null);
		return list;
	}

	@Override
	public int updateUserInfo(UserInfo user) {
		return 0;
	}

}
 List list=DaoFactory.executeQuery(sql, null); return list; } @Override public int updateUserInfo(UserInfo user) { return 0; } }

 

测试类

package nan;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		
		UserInfoDAO udd=new UserInfoDAOImpl();
		List tableList=udd.queryUserInfo();
		for(int i=0;i<tableList.size();i++){
			List rowList=(List)tableList.get(i);
			//cann't from Object to List,必须强转
			for(int j=0;j<rowList.size();j++){
				System.out.print(rowList.get(j)+"\t");
			}
			System.out.println();//每行完毕后换行
		}
	}
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月26日   55   0   0 java数据库sql
  TEZNKK3IfmPf   2024年05月31日   26   0   0 sqlite数据库
  TEZNKK3IfmPf   2024年05月31日   31   0   0 数据库mysql
  TEZNKK3IfmPf   2024年05月31日   27   0   0 数据库mysql
TEZNKK3IfmPf