JAVA连接数据库增强DAOWord文档格式.docx
- 文档编号:6514821
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:28
- 大小:18.61KB
JAVA连接数据库增强DAOWord文档格式.docx
《JAVA连接数据库增强DAOWord文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA连接数据库增强DAOWord文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
ResultSetrs=null;
//驱动字符串
privateStringDRIVER="
com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
//连接URL,默认master
privateStringfullDB_URL="
jdbc:
sqlserver:
//localhost:
1433;
databaseName=master"
privateStringDB_URL="
databaseName="
//用户名
privateStringuserName="
sa"
//密码
privateStringpassword="
123"
//是否显示SQL语句
privatebooleanshow_sql=false;
/**
*默认构造方法,连接数据库master
publicDBManager(){
}
*连接指定数据库
*@paramdatabaseName
publicDBManager(StringdatabaseName){
fullDB_URL=DB_URL+databaseName;
*设置驱动字符串
*@paramdriver
publicvoidsetDRIVER(Stringdriver){
this.DRIVER=driver;
*得到驱动字符串
*@return驱动字符串
publicStringgetDRIVER(){
returnDRIVER;
*设置数据库名称,以默认方式自动生成连接URL
publicvoidsetDataBaseName(StringdatabaseName){
*设置完整连接URL
*@paramfullDB_URL
publicvoidsetFullDB_URL(StringfullDB_URL){
this.fullDB_URL=fullDB_URL;
*得到完整URL
*@return完整URL
publicStringgetFullDB_URL(){
returnfullDB_URL;
*设置用户名
*@paramuserName
publicvoidsetUserName(StringuserName){
this.userName=userName;
*得到用户名
*@return用户名
publicStringgetUserName(){
returnuserName;
*设置密码
*@parampassword
publicvoidsetPassword(Stringpassword){
this.password=password;
*得到密码
*@return密码
publicStringgetPassword(){
returnpassword;
*设置是否显示SQL语句
*@paramshow
publicvoidsetShowSql(booleanshow){
this.show_sql=show;
*得到是否显示SQL语句
*@returntrue显示
publicbooleangetShowSql(){
returnshow_sql;
*获得数据库连接
*@returnconn
publicConnectiongetConnect()throwsException{
try{
//加载驱动
Class.forName(DRIVER);
//获得连接
conn=DriverManager.getConnection(fullDB_URL,userName,password);
}catch(Exceptione){
throwe;
returnconn;
*获得结果集
*@paramsqlsql语句
*@return结果集
*@throwsException
publicResultSetgetResultSet(Stringsql)throwsException{
checkSQL(sql);
conn=getConnect();
stm=conn.createStatement();
rs=stm.executeQuery(sql);
returnrs;
*获得PreparedStatement
*@paramsql
*@returnPreparedStatement对象
publicPreparedStatementgetpreparedStatement(Stringsql)throwsException{
pstm=getConnect().prepareStatement(sql);
returnpstm;
*获得Statement
*@returnstm
publicStatementgetStatement()throwsException{
stm=getConnect().createStatement();
returnstm;
*获得查询结果的向量集合
*@returnVector<
Vector<
Object>
>
publicVector<
DBQuery(Stringsql)throwsException{
Vector<
vvo=newVector<
();
ResultSetMetaDatarsmd=rs.getMetaData();
intcolumnCount=rsmd.getColumnCount();
while(rs.next()){
vo=newVector<
for(intm=1;
m<
=columnCount;
m++){
vo.add(rs.getObject(m));
vvo.add(vo);
}finally{
freeConnect();
}catch(Exceptionex){
returnvvo;
*获得影响记录的条数
*@return影响记录的条数
publicintgetAffectRecordCount(Stringsql)throwsException{
intcount=0;
count=stm.executeUpdate(sql);
returncount;
*执行SQL语句,判断是否成功
*@paramresult
*@returntrue影响记录条数为result
publicbooleanexeSQL(Stringsql,intresult)throwsException{
inttemp=0;
temp=this.getAffectRecordCount(sql);
if(temp==result){
returntrue;
returnfalse;
*@returntrue影响记录条数为1
publicbooleanexeSQL(Stringsql)throwsException{
returnexeSQL(sql,1);
*检查SQL语句
privatevoidcheckSQL(Stringsql)throwsException{
if(sql==null||sql.trim().equals("
"
)){
thrownewException("
thesqlisnullorinvalid"
);
if(show_sql){
System.out.println(sql);
*释放资源
*@throwsSQLException
publicvoidfreeConnect()throwsSQLException{
if(rs!
=null){
rs.close();
rs=null;
if(pstm!
pstm.close();
pstm=null;
if(stm!
stm.close();
stm=null;
if(conn!
conn.close();
conn=null;
}catch(SQLExceptione){
*向表中插入数据,未释放资源,不适合主键为自增列
*@paramobject
*@paramtableName
*@returntrue插入成功
privatebooleaninsertObject(Objectobject,StringtableName)throwsException{
booleanflag=false;
Classcls=object.getClass();
//得到所有已定义字段
Field[]fields=cls.getDeclaredFields();
//得到字段值不为空的字段集合
Field>
notNull=newVector<
//SQL语句
StringBuffersql=newStringBuffer("
insertinto"
+tableName+"
("
//动态参数的?
号
StringBufferque=newStringBuffer();
//获得字段名称,生成SQL语句
for(inti=0;
i<
fields.length;
i++){
Fieldfield=fields[i];
field.setAccessible(true);
if(field.get(object)!
notNull.addElement(field);
sql.append(getFieldName(field)+"
"
que.append("
?
//最后一位为,,去除
if(sql.charAt(sql.length()-1)=='
'
){
sql.deleteCharAt(sql.length()-1);
if(que.charAt(que.length()-1)=='
que.deleteCharAt(que.length()-1);
sql.append("
)values("
+que+"
)"
getpreparedStatement(sql.toString());
notNull.size();
pstm.setObject(i+1,notNull.elementAt(i).get(object));
if(pstm.executeUpdate()==1){
flag=true;
throwex;
returnflag;
*向表中插入数据,未释放资源,适合主键为自增列
*@paramprimaryKeyName
privatebooleaninsertObjectA(Objectobject,StringtableName,StringprimaryKeyName)throwsException{
=null&
&
!
getFieldName(field).equals(primaryKeyName)){
*将对象保存在数据库中,表名为类名小写,适合主键不是自增列
*@returntrue成功
publicbooleansaveObject(Objectobject)throwsException{
returnsaveObject(object,getClassNameWithoutPackage(cls).toLowerCase());
*将对象保存在数据库的对应表中,仅保存不为空的字段,适合主键不是自增列
publicbooleansaveObject(Objectobject,StringtableName)throwsException{
flag=insertObject(object,tableName);
*将对象保存在数据库中,表名为类名小写,适合主键为自增列
*@paramprimaryKeyName主键
publicbooleansaveObjectA(Objectobject,StringprimaryKeyName)throwsException{
returnsaveObjectA(object,getClassNameWithoutPackage(cls).toLowerCase(),primaryKeyName);
*将对象保存在数据库对应表中,适合主键为自增列
*@returntrue保存成功
publicbooleansaveObjectA(Objectobject,StringtableName,StringprimaryKeyName)throwsException{
flag=insertObjectA(object,tableName,primaryKeyName);
}catch(Excepti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 连接 数据库 增强 DAO