操作 sqlite封装的一个类库.docx

上传人:b****4 文档编号:4890292 上传时间:2022-12-11 格式:DOCX 页数:14 大小:16.74KB
下载 相关 举报
操作 sqlite封装的一个类库.docx_第1页
第1页 / 共14页
操作 sqlite封装的一个类库.docx_第2页
第2页 / 共14页
操作 sqlite封装的一个类库.docx_第3页
第3页 / 共14页
操作 sqlite封装的一个类库.docx_第4页
第4页 / 共14页
操作 sqlite封装的一个类库.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

操作 sqlite封装的一个类库.docx

《操作 sqlite封装的一个类库.docx》由会员分享,可在线阅读,更多相关《操作 sqlite封装的一个类库.docx(14页珍藏版)》请在冰豆网上搜索。

操作 sqlite封装的一个类库.docx

操作sqlite封装的一个类库

操作sqlite封装的一个类库

   在wince设备上,使用sqlite很方便,基本都能满足项目的需要,速度也不错。

在工作中,封装了此类,方便开发。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Data.SQLite;

usingSystem.Data;

usingSystem.IO;

namespaceAustec.DB

{

publicclassCSqlite:

IDisposable

{

publicstringm_LastError=null;

privatestringdbPath="";

privateSQLiteConnectionsqConn=null;

privateSQLiteCommandsqCmd=null;

privateSQLiteTransactiontransaction=null;

privateboolm_Result=false;

publicboolResult

{

get{returnm_Result;}

}

///<summary>

///不允许通过该方式构造此类

///</summary>

privateCSqlite(){}

///<summary>

///打开数据库

///</summary>

///<paramname="dbPath">数据库路径</param>

publicCSqlite(stringdbPath)

{

this.dbPath=dbPath;

}

~CSqlite()

{

Close();

}

#region打开与关闭

publicboolOpen()

{

try

{

m_Result=false;

if(sqConn==null)

{

//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个

sqConn=newSQLiteConnection("DataSource="+dbPath+";Pooling=true;FailIfMissing=false");

sqCmd=newSQLiteCommand();

sqCmd.Connection=sqConn;

}

if(sqConn.State==ConnectionState.Closed)

{

booldbExsit=System.IO.File.Exists(dbPath);

sqConn.Open();

///如果数据库不存在,sqlite会创建一个空的数据库,在此创建一个无用的表,填充数据库

if(!

dbExsit)

{

ExecuteNonQuery("createtableLiang(idnvarchar

(1))");

}

}

m_Result=true;

returntrue;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnfalse;

}

}

publicvoidDispose()

{

Close();

}

publicvoidClose()

{

if(sqConn!

=null)

{

if(sqConn.State==ConnectionState.Open)

{

sqConn.Close();

sqConn=null;

sqCmd=null;

}

}

System.Data.SQLite.SQLiteConnection.ClearAllPools();

}

#endregion

///<summary>

///执行不带返回结果的命令

///</summary>

///<paramname="sqlCmd">查询语句</param>

///<returns></returns>

publicboolExecuteNonQuery(stringsqlCmd)

{

m_LastError=null;

m_Result=false;

try

{

sqCmd.CommandText=sqlCmd;

sqCmd.ExecuteNonQuery();

m_Result=true;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnfalse;

}

returntrue;

}

///<summary>

///执行SQL命令,并返回Read,Read使用完毕,必须关闭

///</summary>

///<paramname="sqlCmd"></param>

///<returns></returns>

publicSQLiteDataReaderExecuteQuery(stringsqlCmd)

{

m_LastError=null;

m_Result=false;

try

{

sqCmd.CommandText=sqlCmd;

SQLiteDataReaderread=sqCmd.ExecuteReader();

m_Result=true;

returnread;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnnull;

}

}

///<summary>

///执行SQL命令,并返回Read,Read使用完毕,必须关闭

///</summary>

///<paramname="sqlCmd"></param>

///<returns></returns>

publicboolExecuteQueryTable(stringsqlCmd,outDataTabledt)

{

m_LastError=null;

m_Result=false;

dt=newDataTable("liang");

try

{

//执行查询命令

SQLiteDataReaderread=ExecuteQuery(sqlCmd);

if(m_Result)

{

m_Result=false;

if(read==null)

{

m_LastError="sqliteerror:

未查询到数据!

";

returnfalse;

}

///添充表

for(inti=0;i<read.FieldCount;i++)

{

dt.Columns.Add(newDataColumn(i.ToString()));

}

while(read.Read())

{

DataRowrow=dt.NewRow();

for(inti=0;i<read.FieldCount;i++)

{

row[i]=read.GetValue(i).ToString();

}

dt.Rows.Add(row);

}

read.Close();

m_Result=true;

returntrue;

}

returnfalse;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnfalse;

}

}

///<summary>

///执行SQL命令,并返回第一行记录的第一列值

///</summary>

///<paramname="sqlCmd"></param>

///<returns></returns>

publicobjectExecuteScalar(stringsqlCmd)

{

m_LastError=null;

m_Result=false;

try

{

sqCmd.CommandText=sqlCmd;

objectob=sqCmd.ExecuteScalar();

if(ob!

=null)

{

m_Result=true;

}

else

{

m_LastError="sqliteerror:

未查询到数据";

}

returnob;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnnull;

}

}

///<summary>

///按照内存表的结构创建表及索引;如果表已经存在,将直接返回

///</summary>

///<paramname="dt">在创建的表</param>

///<paramname="strIndexField">索引字段,多个字段以逗号分隔</param>

///<returns></returns>

publicboolCreateTable(refDataTabledt,stringstrIndexField)

{

try

{

m_Result=false;

if(dt==null)

{

returnfalse;

}

//查询表有没有存在

stringsql="selectcount(*)fromsqlite_masterwheretbl_name='"+dt.TableName+"'andtype='table'";

objectob=ExecuteScalar(sql);

if(!

m_Result)

{

returnfalse;

}

if(Convert.ToInt32(ob)==1)

{

m_Result=true;

returntrue;

}

stringstrSql="",strCmdSql="";

strCmdSql="CREATETABLE"+dt.TableName+"(";

for(inti=0;i<dt.Columns.Count;i++)

{

strSql+=dt.Columns[i].ColumnName+"nvarchar(30)";

if(i<dt.Columns.Count-1)

{

strSql+=",";

}

}

strCmdSql+=strSql+")";

if(!

ExecuteNonQuery(strCmdSql))

{

returnfalse;

}

if(strIndexField!

=null&&strIndexField.Trim().Length>0)

{

string[]strIndex=strIndexField.Split(',');

for(inti=0;i<strIndex.Length;i++)

{

strCmdSql="CREATEINDEX"+dt.TableName+"_index"+i.ToString()+"ON"+dt.TableName+"("+strIndex[i]+")";

if(!

ExecuteNonQuery(strCmdSql))

{

returnfalse;

}

}

}

m_Result=true;

returntrue;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnfalse;

}

}

///<summary>

///删除表及表的索引

///</summary>

///<paramname="tablename"></param>

///<returns></returns>

publicboolDropTableAndIndex(stringtablename)

{

m_Result=false;

try

{

//查询表及索引有没有存在

stringsql="selectcount(*)fromsqlite_masterwheretbl_name='"+tablename+"'andtype='table'";

objectob=ExecuteScalar(sql);

if(!

m_Result)

{

returnfalse;

}

if(Convert.ToInt32(ob)==0)

{

m_Result=true;

returntrue;

}

stringcmdSql="droptable"+tablename;

if(!

ExecuteNonQuery(cmdSql))

{

returnfalse;

}

m_Result=true;

returntrue;

}

catch(System.Exceptionex)

{

m_LastError=ex.Message;

returnfalse;

}

}

///<summary>

///将内存表插入相应的表中

///</summary>

///<paramname="dt"></param>

///<returns></returns>

publicboolInsertTable(refDataTabledt)

{

m_Result=false;

if(dt==null)

{

returnfalse;

}

if(dt.Rows.Count==0)

{

m_Result=true;

returntrue;

}

inti=0;

stringsql="insertinto"+dt.TableName+"values(";

stringsqlData="",strCmdSql="";

BeginTransaction();

foreach(DataRowrowindt.Rows)

{

sqlData="";

for(i=0;i<dt.Columns.Count;i++)

{

sqlData+="'"+row[i].ToString()+"'";

if(i<dt.Columns.Count-1)

{

sqlData+=",";

}

}

strCmdSql=sql+sqlData+")";

if(!

ExecuteNonQuery(strCmdSql))

{

Rollback();

returnfalse;

}

}

Commit();

m_Result=true;

returntrue;

}

///<summary>

///删除指定表的数据

///</summary>

///<paramname="tableName">表名</param>

///<returns></returns>

publicboolDeleteTableData(stringtableName)

{

m_Result=false;

stringsql="selectcount(*)fromsqlite_masterwheretbl_name='"+tableName+"'andtype='table'";

objectob=ExecuteScalar(sql);

if(!

m_Result)

{

returnfalse;

}

m_Result=false;

if(Convert.ToInt32(ob)==0)

{

m_LastError="被删除数据的表不存在!

";

returnfalse;

}

sql="deletefrom"+tableName;

if(ExecuteNonQuery(sql))

{

m_Result=true;

returntrue;

}

else

{

returnfalse;

}

}

#region事务操作

publicvoidBeginTransaction()

{

transaction=sqConn.BeginTransaction();

}

publicvoidCommit()

{

transaction.Commit();

}

publicvoidRollback()

{

transaction.Rollback();

}

#endregion

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1