using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Data.SQLite; using System.Data.Common; using System.Data; namespace WpfTest1.SQLite { /// /// 说明:这是一个针对System.Data.SQLite的数据库常规操作封装的通用类。 /// public class SQLiteHelper { private string connectionString = string.Empty; /// /// 构造函数 /// /// SQLite数据库文件路径 public SQLiteHelper(string dbPath) { this.connectionString = "Data Source=" + dbPath; } /// /// 创建SQLite数据库文件 /// /// 要创建的SQLite数据库文件路径 public static void CreateDB(string dbPath) { using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + dbPath)) { connection.Open(); using (SQLiteCommand command = new SQLiteCommand(connection)) { //command.CommandText = "CREATE TABLE Demo(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE)"; //command.ExecuteNonQuery(); } } } /// /// 对SQLite数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// 执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准 /// public int ExecuteNonQuery(string sql, SQLiteParameter[] parameters) { int affectedRows = 0; //Console.WriteLine(sql); //Console.WriteLine(connectionString); using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { connection.Open(); using (DbTransaction transaction = connection.BeginTransaction()) { using (SQLiteCommand command = new SQLiteCommand(connection)) { command.CommandText = sql; if (parameters != null) { command.Parameters.AddRange(parameters); } affectedRows = command.ExecuteNonQuery(); } transaction.Commit(); } } return affectedRows; } /// /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例 /// /// 要执行的查询语句 /// 执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准 /// public SQLiteDataReader ExecuteReader(string sql, SQLiteParameter[] parameters) { SQLiteConnection connection = new SQLiteConnection(connectionString); SQLiteCommand command = new SQLiteCommand(sql, connection); if (parameters != null) { command.Parameters.AddRange(parameters); } connection.Open(); return command.ExecuteReader(CommandBehavior.CloseConnection); } /// /// 执行一个查询语句,返回一个包含查询结果的DataTable /// /// 要执行的查询语句 /// 执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准 /// public DataTable ExecuteDataTable(string sql, SQLiteParameter[] parameters) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand command = new SQLiteCommand(sql, connection)) { if (parameters != null) { command.Parameters.AddRange(parameters); } SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); DataTable data = new DataTable(); adapter.Fill(data); return data; } } } /// /// 执行一个查询语句,返回查询结果的第一行第一列 /// /// 要执行的查询语句 /// 执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准 /// public Object ExecuteScalar(string sql, SQLiteParameter[] parameters) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand command = new SQLiteCommand(sql, connection)) { if (parameters != null) { command.Parameters.AddRange(parameters); } SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); DataTable data = new DataTable(); adapter.Fill(data); Console.WriteLine(data.ToString()); return data; } } } /// /// 执行一个查询语句,返回插入结果的id /// /// 要执行的查询语句 /// public Object ExecuteFindNewID(string sql) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand command = new SQLiteCommand(sql, connection)) { connection.Open(); int row_id = Convert.ToInt32(command.ExecuteScalar()); //Console.WriteLine(row_id); return row_id; } } } //查询数据库中的记录数 public Object ExecuteFindCount(string sql, SQLiteParameter[] parameters) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand command = new SQLiteCommand(sql, connection)) { if (parameters != null) { command.Parameters.AddRange(parameters); } connection.Open(); int count = Convert.ToInt32(command.ExecuteScalar()); //Console.WriteLine(row_id); return count; } } } /// /// 查询数据库中的所有数据类型信息 /// /// public DataTable GetSchema() { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { connection.Open(); DataTable data = connection.GetSchema("TABLES"); connection.Close(); //foreach (DataColumn column in data.Columns) //{ // Console.WriteLine(column.ColumnName); //} return data; } } } }