#coding=gbk
from sqlite3 import dbapi2
# -------------------------------
# jxDataSet 对象
# 用于保存 打开数据表的数据
# ------------------------------
class jxDataSet:
fields = [ ] # 字段名列表
data = [ ] # 数据表的记录
sql = [ ] # sql 语句
sERR = "" # 打开数据表时的错误信息
# 如果为空,表示打开成功
def __init__ (self ):
pass
def ok(self):
return self.sERR==""
# 一个简单的显示打开结果的函数 disp
def disp(self):
if self.sERR!="":
print("ERROR:",sERR);
return
print( "RecordCount=", len(self.data) )
print( "fields=",self.fields)
for x in self.data:
print( x )
# 数据库联接对象
#
class jxconn:
DB_Name = ""
def __init__ (self, aDB_name ):
self.DB_Name = aDB_name
# 打开 sql 指定的数据表
# 入口:sql
# 返回: jxDataSet 对象
def opensql( self,sql ):
jxData = jxDataSet()
jxData.sql = sql
try:
conn=dbapi2.connect(self.DB_Name,30)
except Exception , E:
jxData.sERR = str(E)
if jxData.sERR!="":
return jxData
try:
cs = conn.cursor()
cs.execute( sql )
jxData.fields = [ x[0] for x in cs.description ]
jxData.data = cs.fetchall()
cs.close()
except Exception , E:
jxData.sERR = str(E)
conn.close()
del( conn )
return jxData
# 执行 sql 语句
# 入口: sqls
# 一个字符串列表,每个元素是一条 sql 语句
# 或者一条 sql 语句
# 返回: 错误信息
# sqls 中所有的 sql语句中,
# 要么同时执行,要么同时不执行,
# 已执行部分,如果后面的sql语句出现错误,则一起回滚
#
def runsql( self,sqls ):
if not (type(sqls) in [ str, list]):
return "parameter error"
if type(sqls)==str:
sqls = [ sqls ]
n = len(sqls)
if (n