Sqlite 조작 클래스 코드

7987 단어 Sqlite조작 류
1.ADO.NET Provider For SQLite.ADO.NET 제공 자 는 홍콩 의 한 회사 가 제공 한 것 같 습 니 다.프로젝트 주 소 는 다음 과 같 습 니 다.http://sourceforge.net/projects/sqlite-dotnet2 2.SQLite.NET 에 대한 패키지,간단 한 조작 도움말 클래스 를 제공 합 니 다.SQLiteHelper
 
/**//**
* SQLite .
*
* Author: egmkang.wang
* Date: 2009-06-21
*/
namespace System.Data.SQLite
{
using System.Data;
using System.Data.SQLite;
using System.IO;
public class SqliteHelper
{
private static string pwd = "PWD";
private static string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\sqliteTest.db";
private static string connString = string.Format("Data Source =\"{0}\"", path, pwd);
/**//// <summary>
///
/// </summary>
public static string ConnString
{
get { return connString; }
}
/**//// <summary>
/// SQL ,
/// </summary>
/// <param name="cmdText"> SQL </param>
/// <returns> </returns>
public static int ExecuteNonQuery(string cmdText)
{
return ExecuteNonQuery(ConnString, cmdText);
}
/**//// <summary>
/// SQL
/// </summary>
/// <param name="trans"> </param>
/// <param name="cmdText">SQL </param>
/// <returns> </returns>
public static int ExecuteNonQuery(SQLiteTransaction trans, string cmdText, params SQLiteParameter[] parameters)
{
int val = 0;
using (SQLiteCommand cmd = new SQLiteCommand())
{
PrepareCommand(cmd, (SQLiteConnection)trans.Connection, trans, cmdText, parameters);
val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
return val;
}
/**//// <summary>
/// SQL ,
/// </summary>
/// <param name="connString"> </param>
/// <param name="cmdText">SQL </param>
/// <param name="parameters">SQL </param>
/// <returns> </returns>
public static int ExecuteNonQuery(string connString, string cmdText, params SQLiteParameter[] parameters)
{
using (SQLiteConnection conn = new SQLiteConnection(connString))
{
return ExecuteNonQuery(conn, cmdText, parameters);
}
}
/**//// <summary>
/// SQL ,
/// </summary>
/// <param name="connection"> </param>
/// <param name="cmdText">SQL </param>
/// <param name="parameters"> </param>
/// <returns> </returns>
public static int ExecuteNonQuery(SQLiteConnection connection, string cmdText, params SQLiteParameter[] parameters)
{
int val = 0;
using (SQLiteCommand cmd = new SQLiteCommand())
{
PrepareCommand(cmd, connection, null, cmdText, parameters);
val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
return val;
}
/**//// <summary>
/// , . .
/// </summary>
/// <param name="cmdText">SQL </param>
/// <returns> </returns>
public static object ExecuteScalar(string cmdText)
{
return ExecuteScalar(ConnString, cmdText);
}
/**//// <summary>
/// , . .
/// </summary>
/// <param name="connString"> </param>
/// <param name="cmdText">SQL </param>
/// <returns> </returns>
public static object ExecuteScalar(string connString, string cmdText)
{
using (SQLiteConnection conn = new SQLiteConnection(connString))
{
return ExecuteScalar(conn, cmdText);
}
}
/**//// <summary>
/// , . .
/// </summary>
/// <param name="connection"> </param>
/// <param name="cmdText">SQL </param>
/// <returns> </returns>
public static object ExecuteScalar(SQLiteConnection connection, string cmdText)
{
object val;
using (SQLiteCommand cmd = new SQLiteCommand())
{
PrepareCommand(cmd, connection, null, cmdText);
val = cmd.ExecuteScalar();
}
return val;
}
/**//// <summary>
/// SQL , DataReader
/// </summary>
/// <param name="cmdText">SQL </param>
/// <param name="parameters"> </param>
/// <returns> DataReader</returns>
public static SQLiteDataReader ExecuteReader(string cmdText, params SQLiteParameter[] parameters)
{
return ExecuteReader(ConnString, cmdText, parameters);
}
/**//// <summary>
/// SQL , DataReader
/// </summary>
/// <param name="connString"> </param>
/// <param name="cmdText">SQL </param>
/// <param name="parameters"> </param>
/// <returns> DataReader</returns>
public static SQLiteDataReader ExecuteReader(string connString, string cmdText, params SQLiteParameter[] parameters)
{
SQLiteConnection conn = new SQLiteConnection(connString);
SQLiteCommand cmd = new SQLiteCommand();
try
{
PrepareCommand(cmd, conn, null, cmdText, parameters);
SQLiteDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/**//// <summary>
/// Command , , , ,
/// </summary>
/// <param name="cmd">Command </param>
/// <param name="conn">Connection </param>
/// <param name="trans">Transcation </param>
/// <param name="cmdText">SQL Text</param>
/// <param name="parameters"> </param>
private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, params SQLiteParameter[] parameters)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
if (null != parameters && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
}
}
}
첨삭 검사:
 
Insert,Delete,Update
const string s_AddressTreeIntoSQLite = "Insert into [AddressTree] ([Id],[ItemType],[ParentId],[Name]) values (@Id,@ItemType,@ParentId,@Name);";
SqliteHelper.ExecuteNonQuery(tran, s_AddressTreeIntoSQLite,
//new SQLiteParameter[] here
);
Select
const string s_AddresTreeFromSqlCE = "Select [Id],[ItemType],[ParentId],[Name] From [AddressTree];";
using (SqlCeDataReader rdr = SqlCeHelper.ExecuteReader(s_AddresTreeFromSqlCE ))
{
while (rdr.Read())
{
//Read Data Here
}
}
4.기타 SQLite 성능 은 절대적 으로 강 합 니 다.4 표 연결 조회,200 회 조회,SQL CE 는 44 초(with index),SQLite 는 3-6 초(with index)만 필요 합 니 다.삽입,업데이트 성능 참조 삭제http://www.cnblogs.com/egmkang/archive/2009/06/06/1497678.html PS:최근 sql 을 실행 할 때 ConnectionString 대신 단일 한 긴 연결 을 사용 하 는 것 이 좋 습 니 다.이 유 는 간단 합 니 다.내장 형 데이터 베 이 스 는 연결 풀 기술 이 없습니다.데이터 베 이 스 를 조회 하 는 과정 에서 링크 를 열 고 닫 는 비용 이 상대 적 으로 비싸다.이 점 은 프로그램 을 쓸 때 다음 과 같이 주의해 야 한다.그리고 바 이 너 리 자원 에 대해 서 는 제때에 방출 해 야 한다.예 를 들 어 SqlCommand 등 은 웹 프로그램 을 쓸 때 체험 이 그리 크 지 않다.결국 그런 환경 은 대량의 메모리 가 있 고 GC 의 효율 도 비교적 높다.

좋은 웹페이지 즐겨찾기