1. 程式人生 > >C#中如何使用SQLite資料庫

C#中如何使用SQLite資料庫

 class SQLiteHelper
    {
        public static SQLiteConnection conn = null;


        public static string tableName = "msg_record";
        /**
         * 獲取資料庫連結
         */
        public static SQLiteConnection getSQLConnection()
        {
            SQLiteConnection conn = null;
            string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
            conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置  
            return conn;
        }
        /**
         * 釋放連結
         */
        public static void releaseSQLConnection()
        {
            if (conn != null)
            {
                conn.Close();
            }
        }
        /**
         * 獲取SQLcmd
         */
        public static SQLiteCommand getSQLCommand()
        {
            if (conn == null)
            {
                conn = getSQLConnection();
            }


            string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
            conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置  
            SQLiteCommand cmd = new SQLiteCommand(conn);
            return cmd;
        }


        /// <summary> 
        /// 對SQLite資料庫執行增刪改操作,返回受影響的行數。 
        /// </summary> 
        /// <param name="sql">要執行的增刪改的SQL語句</param> 
        /// <param name="parameters">執行增刪改語句所需要的引數,引數必須以它們在SQL語句中的順序為準</param> 
        /// <returns></returns> 
        public static int ExecuteNonQuery(string sql, SQLiteParameter[] parameters)
        {
            int affectedRows = 0;
            using (SQLiteConnection connection = new SQLiteConnection(getSQLConnection()))
            {
                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;
        }




        //根據uin和userName查詢結果
        public static List<MsgDetail> findMsgDetails(string uin,string userName,string RemarkName)
        {
            string sql = "select * from " + tableName + " where uin ='" + uin + "' and ( userName = '" + userName + "'or remarkName = '"+RemarkName+"')";
            SQLiteConnection connection = new SQLiteConnection(getSQLConnection());
             connection.Open();
           SQLiteCommand cmd = connection.CreateCommand();
            cmd.CommandText = sql;
            SQLiteDataReader reader = cmd.ExecuteReader();
            List<MsgDetail> data = null;
            if(reader.HasRows){
                data = new List<MsgDetail>();
                while(reader.Read()){
                    MsgDetail detail = new MsgDetail();
                    detail.content = reader.GetString(2);
                    detail.type = reader.GetString(3);
                    detail.data = reader.GetString(5);
                    detail.toNickName = reader.GetString(6);
                    detail.nickName = reader.GetString(7);
                    detail.direct = reader.GetInt32(9);
                    data.Add(detail);
                }
            }


            return data;
        }




        //建立表
        public static void createTable()
        {
            SQLiteConnection conn = null;


            string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
            conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置  
            conn.Open();//開啟資料庫,若檔案不存在會自動建立  
            SQLiteCommand cmdInsert = new SQLiteCommand(conn);


            string sql = "CREATE TABLE IF NOT EXISTS " + tableName + "(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,"
                + "uin varchar(255),content varchar(255)," +
                "type varchar(255),remarkName varchar(255),data varchar(255),toNickName varchar(255),nickName varchar(255),userName varchar(255),direct integer)";
            cmdInsert.CommandText = sql;
            cmdInsert.ExecuteNonQuery();
            conn.Close();
        }




        public static string createInsertSql(WxBean tempWx,string remarkName,string FromUserName,int direct,string Content,bool isFile)
        {
            SelfBean selfData = tempWx.getSelfConfig();
            string friendNickName = tempWx.getFriendNickNameByUserName(FromUserName);
            if (friendNickName == null)
                friendNickName = "";
            friendNickName = friendNickName.Replace("<span class=\"", "").Replace("\"></span>", "").Replace(" ", "");
            RegexOptions options = RegexOptions.None;
            Regex regex = new Regex(@"[ ]{2,}", options);
            friendNickName = regex.Replace(friendNickName, @" ");


            string friendRemarkName = tempWx.getFriendRemarkNameByUserName(FromUserName);
            if (friendRemarkName == null)
                friendRemarkName = "";


            string nickName = tempWx.getSelfConfig().NikeName;
            if (nickName == null)
                nickName = "";
            nickName = nickName.Replace("<span class=\"", "").Replace("\"></span>", "");
            nickName = regex.Replace(nickName, @" ");
            string sql = null;
            if(!isFile)
                sql = "insert into " + SQLiteHelper.tableName + "(uin,content,type,remarkName,data,toNickName,NickName,userName,direct) values('" + selfData.Uin + "','" + Content + "','1','" + remarkName + "','" + DateTime.Now.ToString() + "','" + nickName + "','" + friendNickName + "','" + FromUserName + "'," + direct + ")";
            else
                sql = "insert into " + SQLiteHelper.tableName + "(uin,content,type,remarkName,data,toNickName,NickName,userName,direct) values('" + selfData.Uin + "','" + Content + "','2','" + remarkName + "','" + DateTime.Now.ToString() + "','" + nickName + "','" + friendNickName + "','" + FromUserName + "'," + direct + ")";
            return sql;
        }
    }