日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]工具類BaseDao.javapackage?com.accp.jdbc; import?java.sql.Connection; import?java.sql.DriverManager; im

工具類BaseDao.java


package?com.accp.jdbc;

import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.PreparedStatement;
import?java.sql.ResultSet;
import?java.sql.SQLException;

import?org.apache.log4j.Logger;

public?class?BaseDao?{
	//?使用log4j記錄日志
	private?static?Logger?logger?=?Logger.getLogger(BaseDao.class);
	//?連接驅(qū)動
	private?static?final?String?DRIVER?=?"com.microsoft.sqlserver.jdbc.SQLServerDriver";
	//?連接路徑
	private?static?final?String?URL?=?"jdbc:sqlserver://localhost:1433;databaseName=test";
	//?用戶名
	private?static?final?String?USERNAME?=?"sa";
	//?密碼
	private?static?final?String?PASSWORD?=?"sssaaa";
	
	//靜態(tài)代碼塊
	static?{
		try?{
			//?加載驅(qū)動
			Class.forName(DRIVER);
		}?catch?(ClassNotFoundException?e)?{
			e.printStackTrace();
			logger.error("加載驅(qū)動失敗",?e);
		}
	}

	/*
	?*?獲取數(shù)據(jù)庫連接
	?*/
	public?Connection?getConnection()?{
		Connection?conn?=?null;
		logger.debug("開始連接數(shù)據(jù)庫");
		try{
			//與數(shù)據(jù)庫建立連接
			conn=DriverManager.getConnection(URL,?USERNAME,?PASSWORD);
		}catch(SQLException?e){
			e.printStackTrace();
			logger.error("數(shù)據(jù)庫連接失??!",e);
		}
		logger.debug("數(shù)據(jù)庫連接成功");
		return?conn;
	}

	/*
	?*?關(guān)閉數(shù)據(jù)庫連接,注意關(guān)閉的順序
	?*/
	public?void?close(ResultSet?rs,?PreparedStatement?ps,?Connection?conn)?{
		//注意:最后打開的最先關(guān)閉
		if(rs!=null){
			try{
				rs.close();
				rs=null;
			}catch(SQLException?e){
				e.printStackTrace();
				logger.error("關(guān)閉ResultSet失敗",e);
			}
		}
		if(ps!=null){
			try{
				ps.close();
				ps=null;
			}catch(SQLException?e){
				e.printStackTrace();
				logger.error("關(guān)閉PreparedStatement失敗",e);
			}
		}
		if(conn!=null){
			try{
				conn.close();
				conn=null;
			}catch(SQLException?e){
				e.printStackTrace();
				logger.error("關(guān)閉Connection失敗",e);
			}
		}
	}
	
	/*
	?*?查詢方法
	?*?
	?*?sql:?要執(zhí)行的sql語句
	?*?handler:自定義接口
	?*?obj:可變參數(shù)列表
	?*/
	publicT?query(String?sql,ResultSetHandlerhandler,Object...?obj){
		Connection?conn=getConnection();?//獲得連接
		PreparedStatement?ps=null;
		ResultSet?rs=null;
		try{
			//創(chuàng)建PreparedStatement對象
			ps=conn.prepareStatement(sql);
			//為查詢語句設(shè)置參數(shù)
			setParameter(ps,?obj);
			//獲得ResultSet結(jié)果集
			rs=ps.executeQuery();
			//返回對象
			return?handler.callback(rs);
		}catch(SQLException?e){
			e.printStackTrace();
			logger.error("數(shù)據(jù)庫操作異常",e);
		}finally{
			//關(guān)閉連接
			close(rs,ps,conn);
			logger.debug("釋放資源成功");
		}
		return?null;
	}
	
	/*
	?*?增加、修改、刪除,的方法
	?*?
	?*?obj:?可變參數(shù)列表
	?*/
	public?int?update(String?sql,Object...obj?){
		Connection?conn=getConnection();?//獲得連接
		PreparedStatement?ps=null;
		int?rows=0;
		try{
			//創(chuàng)建PreparedStatement對象
			ps=conn.prepareStatement(sql);
			//為查詢語句設(shè)置參數(shù)
			setParameter(ps,?obj);
			//獲得受影響的行數(shù)
			rows=ps.executeUpdate();
		}catch(SQLException?e){
			e.printStackTrace();
			logger.error("數(shù)據(jù)庫操作異常",e);
		}finally{
			//關(guān)閉連接
			close(null,ps,conn);
			logger.debug("釋放資源成功");
		}
		return?rows;
	}
	
	/*
	?*?為預(yù)編譯對象設(shè)置參數(shù)
	?*/
	public?void?setParameter(PreparedStatement?ps,Object...?obj)
								throws?SQLException?{
		if(obj!=null?&&?obj.length>0){
			//循環(huán)設(shè)置參數(shù)
			for?(int?i?=?0;?i?<?obj.length;?i++)?{
				ps.setObject(i+1,?obj[i]);
			}
		}
	}
}

//自定義接口
interface?ResultSetHandler{
	public?T?callback(ResultSet?rs);
}



操作類,進行增刪改查 UserDao.java



package?com.accp.jdbc;

import?java.sql.Connection;
import?java.sql.PreparedStatement;
import?java.sql.ResultSet;
import?java.sql.SQLException;
import?java.sql.Statement;
import?java.util.ArrayList;
import?java.util.List;

import?com.accp.entity.User;

public?class?UserDao?extends?BaseDao?{
	public?static?void?main(String[]?args)?{
		UserDao?user=new?UserDao();
		Listlist=new?ArrayList();
		//查詢id<10的數(shù)據(jù)
		list=user.queryUser();
		//遍歷結(jié)果集
		for(User?u:list){
			System.out.println(u);
		}
		
		//查詢單條數(shù)據(jù)
		System.out.println(user.queryUserById(10));
		
		//更新數(shù)據(jù)
		User?u=new?User();
		u.setId(2);
		u.setName("張龍");
		u.setAge(22);
		System.out.println("更新"+user.updateUser(u)+"條數(shù)據(jù)");
		
		//刪除數(shù)據(jù)
		System.out.println("刪除"+user.deleteUser(15)+"條數(shù)據(jù)");
		
		//插入數(shù)據(jù)
		User?u1=new?User();
		u1.setName("張三");
		u1.setAge(18);
		user.insertUser(u1);
	}
	
	//查詢多條信息
	public?ListqueryUser(){
		String?sql="select?*?from?users?where?id<10";
		//匿名實現(xiàn)自定義接口
		ResultSetHandler<List>?handler=new?ResultSetHandler<List>(){
			@Override
			public?Listcallback(ResultSet?rs)?{
				Listlist=new?ArrayList();?//用于存放結(jié)果的集合,User類型
				User?user=null;
				try?{
					while(rs.next()){
						user=new?User();?//實例化一個User對象
						user.setId(rs.getInt("id"));
						user.setAge(rs.getInt("age"));
						user.setName(rs.getString("name"));
						list.add(user);?//添加到list集合
					}
				}?catch?(SQLException?e)?{
					e.printStackTrace();
				}
				return?list;
			}
		};
		return?query(sql,handler);
	}

	//查詢單條數(shù)據(jù)
	public?User?queryUserById(int?id){
		String?sql="select?*?from?users?where?id=?";
		//匿名實現(xiàn)自定義接口
		ResultSetHandlerhandler=new?ResultSetHandler()?{
			User?user=new?User();
			@Override
			public?User?callback(ResultSet?rs)?{
				try?{
					while(rs.next()){
						user.setAge(rs.getInt("age"));
						user.setId(rs.getInt("id"));
						user.setName(rs.getString("name"));
					}
				}?catch?(SQLException?e)?{
					e.printStackTrace();
				}
				return?user;
			}
		};
		return?query(sql,handler,id);
	}
	
	//更新數(shù)據(jù)
	public?int?updateUser(User?user){
		String?sql="update?users?set?name=?,age=??where?id=?";
		return?update(sql,?user.getName(),user.getAge(),user.getId());
	}
	
	//刪除數(shù)據(jù)
	public?int?deleteUser(int?id){
		String?sql="delete?from?users?where?id=?";
		return?update(sql,id);
	}
	
	//插入數(shù)據(jù),并返回自動增長的的主鍵值
	public?void?insertUser(User?user){
		Connection?conn=getConnection();?//獲得連接
		PreparedStatement?ps=null;
		ResultSet?rs=null;
		String?sql="insert?into?users?values(?,?)";
		try{
			//?創(chuàng)建能返回自動生成的主鍵的值的預(yù)編譯對象
			ps=conn.prepareStatement(sql,?Statement.RETURN_GENERATED_KEYS);
			ps.setString(1,user.getName());
			ps.setInt(2,?user.getAge());
			int?rows=ps.executeUpdate();
			//?獲得自動增長的的主鍵值
			rs=ps.getGeneratedKeys();
			rs.next();
			//獲得id
			int?id=rs.getInt(1);
			System.out.println("成功添加:"+rows+"條數(shù)據(jù),id是:"+id);
		}catch(SQLException?e){
			e.printStackTrace();
		}finally{
			close(rs,ps,conn);
		}
	}
}


插入測試數(shù)據(jù) InsertTest.java



package?com.accp.jdbc;

import?java.sql.Connection;
import?java.sql.PreparedStatement;
import?java.sql.SQLException;

public?class?InsertTest?extends?BaseDao??{
	public?static?void?main(String[]?args)?{
		InsertTest?user=new?InsertTest();
		user.insertUser();
	}

	public?void?insertUser()?{
		String?sql?=?"insert?into?users?values(?,?)";
		Connection?conn?=?getConnection();
		PreparedStatement?ps?=?null;
		try?{
			//?禁止自動提交事務(wù)
			conn.setAutoCommit(false);
			//?創(chuàng)建能返回自動生成的主鍵的值的預(yù)編譯對象
			ps?=?conn.prepareStatement(sql);
			//開始時間的毫秒數(shù)
			Long?start=System.currentTimeMillis();
			for?(int?i?=?0;?i?<?10000;?i++)?{
				ps.setString(1,?i+"");
				ps.setInt(2,?22);
				ps.addBatch();//?添加到批處理命令中
			}
			ps.executeBatch();//?執(zhí)行批處理
			conn.commit();//?提交事務(wù)
			//結(jié)束時間的毫秒數(shù)
			Long?stop=System.currentTimeMillis();
			//得到總耗時
			Long?ms=stop-start;?
			System.out.println("插入一萬記錄耗時:"+ms+"毫秒");
		}?catch?(SQLException?e)?{
			e.printStackTrace();
			//取消事務(wù)
			try{
				conn.rollback();
			}catch(SQLException?ee){
				ee.printStackTrace();
			}
		}?finally?{
			//打開自動提交事務(wù)
			try?{
				conn.setAutoCommit(true);
			}?catch?(SQLException?e)?{
				e.printStackTrace();
			}
			close(null,?ps,?conn);
		}
	}

}





本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉