⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 database.asp

📁 本系统是一套完整游戏金币交易平台,可以建立一个网站实现游戏金币的在线交易
💻 ASP
📖 第 1 页 / 共 2 页
字号:
<!--#include file="../fcDom/DOM.asp"-->

<%
/*=========================================================================================
 * Database类
 =========================================================================================*/
//类构造函数(类定义)
function Database() {
	//成员变量
	this.dbconn;	//数据库连接

	//成员函数
	this.close = close;  //关闭数据库
	this.BeginTrans = BeginTrans;		//事务开始
	this.CommitTrans = CommitTrans;		//事务提交
	this.RollbackTrans = RollbackTrans;	//事务回滚
	
	this.getPrimaryKey = getPrimaryKey;	//获取指定表的主键值
	this.saveNoUsedPrimaryKey = saveNoUsedPrimaryKey;	//将生成了但未被使用的主键保存起来
	this.clearNoUsedPrimaryKey = clearNoUsedPrimaryKey;  //清除生成了但未被使用的主键

	this.insertEntity = insertEntity;	//往数据库中插入一条记录
	this.deleteEntity =	deleteEntity;	//从数据库中删除数据,没有删除条件时不处理
	this.updateEntity =	updateEntity;	//根据主健值更新一条记录
	this.saveEntity = saveEntity;		//保存Entity,数据库中已有相应记录时相当于执行updateEntity操作,没有相应记录时执行insertEntity
	this.saveList =	saveList;			//逐一保存EntityList下的每一个Entity。保存数据时对每个Entity的操作方式与saveEntity的相同
	
	this.expandEntityAll = expandEntityAll ;  //查询一条记录,结果包含所有字段
	this.queryEntityAll = queryEntityAll;  //查询多条记录,结果包含所有字段
	this.queryEntityAllWithPage = queryEntityAllWithPage;  //翻页查询,结果包含所有字段
	this.queryEntityAllReturnHiddenData = queryEntityAllReturnHiddenData;  //查询多条记录,并返回为表单的隐藏域

	this.runInsertSql = runInsertSql;
	this.runUpdateSql = runUpdateSql;
	this.runDeleteSql = runDeleteSql;
	this.runQuerySql = runQuerySql;
	this.runQuerySqlWithPage = runQuerySqlWithPage;
	this.runQuerySqlReturnHiddenData = runQuerySqlReturnHiddenData;  //查询多条记录,并返回为表单的隐藏域

	//初始化操作,创建数据库连接
	this.dbconn = Server.CreateObject("ADODB.Connection"); 
	var strConn = "DBQ=" + Server.MapPath("../core/database/crm.mdb") + ";Driver={Microsoft Access Driver (*.mdb)};";
	this.dbconn.Open(strConn); 
}


//关闭数据库
function close() {
	this.dbconn.close();
	this.dbconn = null;
}

//开始事务
function BeginTrans() {
	this.dbconn.BeginTrans();
}

//提交事务
function CommitTrans() {
	this.dbconn.CommitTrans();
}

//回滚事务
function RollbackTrans() {
	this.dbconn.RollbackTrans();
}



//获取指定表的主键值
function getPrimaryKey(tableName) {	
	try {
		var primaryKey = "";
		var recordSet = Server.CreateObject("ADODB.RecordSet");

		primaryKey = getNoUsedRefNo(this.dbconn, recordSet, tableName);  //先从TRX_REFNO_NOUSE表得到生成但未使用的主键序列
		if(primaryKey=="-1") {  //没找到
			primaryKey = getRefNo(this.dbconn, recordSet, tableName);  //从TRX_REFNO表得到主键序列
			saveNoUsedRefNo(this.dbconn, recordSet, tableName, primaryKey, "U");  //将生成的主键保存起来
		}
		else {
			clearNoUsedRefNo(this.dbconn, recordSet, tableName, primaryKey);
		}
		
		//在primaryKey前加上日期yyyyMMdd
		var date = new Date();
		var year = date.getFullYear();
		var month = date.getMonth() + 1;
		var day = date.getDate();
		month = month<10?("0"+month):(""+month);
		day = day<10?("0"+day):(""+day);
		primaryKey = "" + year + month + day + primaryKey;

		return primaryKey;
	}
	catch(e) {
		throw e;
	}
	finally {
	}
}

//将生成了但未被使用的主键保存起来
function saveNoUsedPrimaryKey(tableName,primaryKey) {
	try {
		var recordSet = Server.CreateObject("ADODB.RecordSet");
		var refNoLength = getRefNoLength(this.dbconn, recordSet, tableName);
		var refNo = "";
		if(refNoLength>0) refNo = primaryKey.substr(primaryKey.length-refNoLength, refNoLength);
		saveNoUsedRefNo(this.dbconn, recordSet, tableName, refNo, "N");
	}
	catch(e) {
		throw e;
	}
	finally {
	}
}

//清除生成了但未被使用的主键
function clearNoUsedPrimaryKey(tableName,primaryKey) {
	try {
		var recordSet = Server.CreateObject("ADODB.RecordSet");
		var refNoLength = getRefNoLength(this.dbconn, recordSet, tableName);
		var refNo = "";
		if(refNoLength>0) refNo = primaryKey.substr(primaryKey.length-refNoLength, refNoLength);
		clearNoUsedRefNo(this.dbconn, recordSet, tableName, refNo);
	}
	catch(e) {
		throw e;
	}
	finally {
	}
}



//往数据库中插入一条记录,成功返回1,异常抛出
function insertEntity(node) {
	if(node==null) throw "Error:Node is null!";
	
	try {
		var strSQL = "select * from " + node.name;
		//Response.Write(strSQL);

		var recordSet = Server.CreateObject("ADODB.RecordSet");
		recordSet.Open(strSQL, this.dbconn, 1, 3);
		
		/*
		recordSet.AddNew();
		var children = node.child;
		for(var i=0; i<children.length; i++) {
			recordSet(children[i].name) = children[i].value;
		}
		*/
		insertEntityToCache(recordSet, node);

		recordSet.Update();
		recordSet.close();

		return 1;
	}
	catch(e) {
		throw e;
	}
	finally {
	}
}

function insertEntityToCache(recordSet, node) {
	recordSet.AddNew();
	var children = node.child;
	for(var i=0; i<children.length; i++) {
		if(children[i].name.substr(children[i].name.length-1,1)!="#" && children[i].value!="")
			recordSet(children[i].name) = children[i].value;
	}
}

//从数据库中删除数据,没有删除条件时不处理
//例如:UserDetail/classid[@type='like']/String[@value='abc%'] 同于SQL: delete from UserDetail where classid like 'abc%'
function deleteEntity(node) {
	if(node.child.length<1) return -1;

	var strSQL = "";
	strSQL = "delete from " + node.name + " where ";
	for(var i=0; i<node.child.length; i++) {
		strSQL += node.child[i].name + " " + node.child[i].value;
		if(node.child[i].child[0].name=="String")
			strSQL += " '" + node.child[i].child[0].value + "' and ";
		else
			strSQL += " " + node.child[i].child[0].value + " and ";
	}
	strSQL = strSQL.substr(0, strSQL.length-4); 
	//Response.Write(strSQL);
	this.dbconn.Execute(strSQL);
}

//根据主健值更新一条记录,如果主键不存在或未找到对应记录则返回-1,主键字段名必须为C_MAIN_REF
function updateEntity(node) {
	try {
		var strSQL = "select * from " + node.name + " where C_MAIN_REF='";

		//找到主键C_MAIN_REF的值
		var isFindPK = false;
		
		var tmpNode = node.findNodeByXPath("C_MAIN_REF");
		if(tmpNode!=null) {
			strSQL += tmpNode.value + "' ";
			isFindPK = true;
		}
		/*
		for(var i=0; i<node.child.length; i++) {
			if(node.child[i].name.toUpperCase()=="C_MAIN_REF") {
				strSQL += node.child[i].value + "' ";
				isFindPK = true;
				break;
			}
		}
		*/
		if(!isFindPK) return -1;
		
		//Response.Write(strSQL);

		var recordSet = Server.CreateObject("ADODB.RecordSet");
		recordSet.Open(strSQL, this.dbconn, 1, 3);
		if(!recordSet.EOF) {
			var children = node.child;
			for(var i=0; i<children.length; i++) {
				if(children[i].name.substr(children[i].name.length-1,1)!="#" && children[i].value!="")
					recordSet(children[i].name) = children[i].value;
			}
			recordSet.Update();
			recordSet.close();	
			return 1;
		}
		else {
			recordSet.close();	
			return -1;
		}
		
	}
	catch(e) {
		throw e;
	}
	finally {
	}
}

//保存Entity,数据库中已有相应记录时相当于执行updateEntity操作,没有相应记录时执行insertEntity
function saveEntity(node) {
	var returnVal = this.updateEntity(node);
	if(returnVal==1) {
		return 1;
	}
	else {
		return this.insertEntity(node);
	}
}

//逐一保存EntityList下的每一个Entity。保存数据时对每个Entity的操作方式与saveEntity的相同
function saveList(node) {
	if(node==null) throw "Error:Node is null!";
	
	try {
		var strSQL = "select * from " + node.value;
		//Response.Write(strSQL);

		var recordSet = Server.CreateObject("ADODB.RecordSet");
		recordSet.Open(strSQL, this.dbconn, 1, 3);
		
		for(var i=0; i<node.child.length; i++) {	
			insertEntityToCache(recordSet, node.child[i]);
		}

		recordSet.UpdateBatch();
		recordSet.close();
	}
	catch(e) {
		throw e;
	}
	finally {
	}
}

//查询一条记录,结果包含所有字段, 参数node: UserDetail/classid[String='0001']
//返回值: 1 从数据库查询到1条数据  0 没有查询到数据 -1 输入的参数个数不为1;查询到的记录数超过1条 
function expandEntityAll(node) {
	var strSQL = "select * from " + node.name + " where ";
	
	var children = node.child;
	for(var i=0; i<children.length; i++) {
		if(children[i].name.substr(children[i].name.length-1,1)!="#" && children[i].value!="") {
			if(children[i].type=="String")
				strSQL += children[i].name + "='" + children[i].value + "' ";
			else
				strSQL += children[i].name + "='" + children[i].value + "' ";
		}
	}
	//Response.Write(strSQL);

	var rs = this.runQuerySql(strSQL);
	if(rs.RecordCount<1) {
		rs.close();
		return 0;
	}
	else if(rs.RecordCount>1) {
		rs.close();
		return -1;
	}
	else {
		var recordCount = rs.RecordCount;
		var fieldsCount = rs.Fields.Count;

		var hiddenData = "";

			for(var j=0; j<fieldsCount; j++) {
				var fieldName = rs.Fields(j).Name;
				var fieldValue = rs(fieldName)+"";
				var tmpNode = new Node(fieldName, "", fieldValue, 2);
				var xPath = fieldName;
				
				if(node.findNodeByXPath(xPath)==null) 
					node.addChildNode(tmpNode);
				//Response.Write(tmpNode.value);
			}


		rs.close();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -