C#1のSQLite決意テーブルメソッドフィールドが存在し、列の名前を変更、削除、追加

SQLiteHelperクラス:

システムを使用しました。
System.Collections.Genericを使用しました。
System.Textのを使用しました。
System.Dataを使用しました。
System.Data.OleDbを使用しました。
System.Data.SQLiteを使用しました。
System.Windows.Formsを使用しました。
名前空間TestSQLite 
{ 
    publicクラスのSqliteHelper 
    { 
        //连接字符串
        プライベート静的文字列str = "データソース=" + AppDomain.CurrentDomain.BaseDirectory + "\\ DATA.db"。

        /// <要約> 
        ///增删改
        /// 20180723 
        /// </要約> 
        /// <PARAM NAME = "SQL"> SQL语句</ param>の
        /// <PARAM NAME = "PARAM"> SQL参数</ param>の 
        /// <リターン>受影响的行数<
        パブリックstatic int型は、ExecuteNonQuery(文字列のSQLは、SQLiteParameter [] paramはparamsは)
        { 
            試みる
            { 
                (SQLiteConnectionコン=新しいSQLiteConnection(STR))を使用して、
                { 
                    使用(SQLiteCommand CMD =新しいSQLiteCommand(SQL、CON))
                    { 
                        con.Open()。
                        (もし!PARAM = NULL)
                        { 
                            cmd.Parameters.AddRange(パラメータ); 
                        } 

                        ストリングSQL2 = cmd.CommandText。
                        //con.Close()。
                        cmd.ExecuteNonQueryリターン(); 
                    } 
                } 
            } 
            キャッチ(SQLiteException SE)
            { 
                戻り0; 
            } 
        } 


        /// <まとめ> 
        /// CRUD 
        /// 20180723が
        /// </要約> 
        /// <PARAM NAME = "SQL"> </ param>のSQL文
        /// <PARAM NAME = "PARAM"> SQLパラメータは、</ param>の
        /// <戻り値>影響を受けた行の数</戻り値> 
        は、ExecuteNonQuery int型のpublic static(文字列のSQL)
        { 
            試み
            {
                使用(SQLiteConnectionコン=新しいSQLiteConnection(STR)) 
        /// <要約> 
        ///查询
        /// 20180723
                { 
                    使用(SQLiteCommand CMD =新しいSQLiteCommand(SQL、CON))
                    { 
                        con.Open()。
                        文字列SQL2 = cmd.CommandText。
                        con.Close(); 
                        cmd.ExecuteNonQueryを返します(); 
                    } 
                } 
            } 
            キャッチ(SQLiteException SE)
            { 
                0を返します。
            } 
        } 

        /// </要約> 
        /// <PARAM NAME = "SQL"> SQL语句</ PARAM> 
        /// <PARAM NAME = "PARAM"> SQL参数</ PARAM> 
        /// <戻ります> 
        パブリック静的オブジェクトは、ExecuteScalar(文字列SQL)
        { 
            試みる
            { 
                (SQLiteConnectionコン=新しいSQLiteConnection(STR))を使用して、
                { 
                    (SQLiteCommand CMD =新しいSQLiteCommand(CON))を使用して
                    { 
                        con.Open()。
                        cmd.CommandText = SQL; 
                        cmd.ExecuteScalarを返します();
            キャッチ(例外例){ 
                   MessageBox.Show(ex.Message)。
                  ヌルを返します。
            
            } 


        } 


        /// <要約> 
        ///查询
        /// 20180723
        /// </要約> 
        /// <PARAM NAME = "SQL"> SQL语句</ PARAM> 
        /// <PARAM NAME = "PARAM"> SQL参数</ PARAM> 
        /// <戻る>首行首列</戻り> 
        パブリック静的オブジェクトは、ExecuteScalar(文字列SQLは、SQLiteParameter [] PARAMをparamsは)
        { 
            (SQLiteConnectionコン=新しいSQLiteConnection(STR))を使用して、
            { 
                使用(SQLiteCommand CMD =新しいSQLiteCommand(SQL、CON))
                { 
                    con.Open( ); 
                    (もし!PARAM = NULL)
                    { 
                        cmd.Parameters.AddRange(パラメータ);

                } 
            } 
        } 

        /// <要約> 
        ///多行查询
        /// 20180723 
        /// </要約> 
        /// <PARAM NAME = "SQL"> SQL语句</ PARAM> 
        /// <PARAM NAME = "PARAM"> SQL参数</ PARAM> 
        /// <戻る> SQLiteDateReader </戻り> 
        パブリック静的SQLiteDataReaderのExecuteReader(文字列のSQLは、SQLiteParameterは[] PARAM paramsは)
        { 
            (SQLiteConnectionコン=新しいSQLiteConnection(STR))を使用して、
            { 
                (使用しますSQLiteCommand CMD =新しいSQLiteCommand(SQL、CON))  
                    {))と
                {
                    (もし!PARAM = null)の
                        cmd.Parameters.AddRange(PARAM)。
                    } 
                    試みる
                    { 
                        )(con.Openします。
                        cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)を返します。
                    } 
                    キャッチ(例外例)
                    { 
                        con.Close()。
                        con.Dispose(); 
                        EXを投げます。
                    } 
                } 
            } 

        } 

        /// <要約> 
        ///查询多行数据
        /// 20180723 
        /// </要約> 
        ///ます。<param name = "SQL"> SQL语句</ PARAM> 
        /// <PARAM NAME = "PARAM"> SQL参数</ PARAM> 
        /// <戻る>一个表</戻ります> 
        パブリック静的データテーブルExecuteTable(文字列のSQL、paramsはSQLiteParameter [] PARAM)
        { 
            データテーブルDT =新しいデータテーブル()。
            使用して(SQLiteDataAdapterのSDA =新しいSQLiteDataAdapter(SQL、STR))
            { 
                場合(!PARAM = NULL)
                { 
                    sda.SelectCommand.Parameters.AddRange(パラメータ); 
                } 
                sda.Fill(DT)。
            } 
            DTを返します。


        /// </要約> 
        /// <PARAM NAME = "TBNAME">テーブル</ PARAM> 
        /// <PARAM NAME = "insertData">データディクショナリを挿入する</ PARAM> 
        /// <戻り値>影響を受けた行</戻り値>の数
        のpublic static int型のexecutelnsert(文字列TBNAME、辞書<文字列、文字列> insertData)
        { 
            文字列ポイント= ""; //区切り文字(、)
            文字列keyStr = ""; //スプライシング文字のフィールド名文字列
            文字列valueStr = ""; //文字列の連結値の

            一覧<SQLiteParameter> PARAM =新しい新しいリスト<SQLiteParameter>(); 
            foreachの(insertData.Keysの文字列キー)
            { )
                param.Add(新SQLiteParameter( "@" +キー、insertData [キー])); 
                keyStr String.Formatの+ =( "{0} '{1}'」、ポイント)、キー。
                + = String.FormatのvalueStr(ポイント、キー"@ {{0}} 1。"); 
        /// <戻り値>影響を受けた行数</リターン>
                ポイント= ""; 
            } 
            文字列のSQL = String.Formatの( "INSERT INTO` {0} '({1})の値({2})"、TBNAME、keyStr、valueStr)。

            //は、SQLを返します。
            返すのExecuteNonQuery(SQL、param.ToArray()); 

        } 

        /// <要約> 
        ///执行更新语句
        /// 20180725 
        /// </要約> 
        /// <PARAM NAME = "TBNAME">表名</ PARAM> 
        /// <PARAM NAME = "ここ">更新条件:ID = 1 </ PARAM> 
        /// <PARAM NAME =" insertData ">需要更新的数据</ PARAM>
        公共の静的なint型のexecuteUpdate(文字列TBNAME、文字列の場合は、辞書<文字列、文字列> insertData)
            文字列kvStr = ""; //键值对拼接字符串(同上@ ID =)

            一覧<SQLiteParameter> PARAM =新しいリスト<SQLiteParameter>(); 
            foreachの(insertData.Keysの文字列キー)
            { 
                kvStr + = String.Formatの( "{0} {1} = @ {2}"、ポイント、キー、キー)。
                param.Add(新SQLiteParameter( "@" +キー、insertData [キー])); 
                ポイント= ""; 
            } 
            文字列のSQL = String.Formatの( "UPDATEが'{0}' {1} {2} WHERE SET"、TBNAME、kvStr)。

            返すのExecuteNonQuery(SQL、param.ToArray()); 

        } 






        ///查询
        /// 20180723 
        /// </要約> 
        /// < 
        /// <PARAM NAME = "PARAM"> SQL参数</ PARAM> 
        /// <戻る>首行首列</戻り> 
        パブリック静的データテーブルGetDataTable(文字列SQL)
        { 
            試みます
            { 
                使用(SQLiteConnectionコン=新しいSQLiteConnection(STR))
                { 
                    使用(SQLiteCommand CMD =新しいSQLiteCommand(SQL、CON))
                    { 
                        con.Open()。  
                        SQLiteDataAdapter広告=新しいSQLiteDataAdapter(CMD); 
                        DataTableのTB =新しいDataTableを(); 
                        ad.Fill(TB)。
                        con.Close(); 
                        TBを返します。
                    
                    }
                } 
            } 
            キャッチ(例外例)
            { 
                MessageBox.Show(ex.Message)。
                ヌルを返します。

            } 


        } 






    } 
}

  

 

テスト:

 

   // .........一つの値を参照
            MessageBox.Show( "" + SqliteHelper.ExecuteScalar( "UID <> ''"のメンバーからUIDを選択します)); 
            // SQL構文作成を参照
            のDataTable tbは= SqliteHelper.GetDataTable( "sqlite_master SELECT * FROMどこ名= 'メンバー'"); 
            MessageBox.Show( "" + tb.Rows [0] [ "SQL"])。
            //あるいは:
            //文字列の構文= "" + SqliteHelper.ExecuteScalar( "sqlite_masterからSQLを選択する場所名= 'メンバー'"); 
            //MessageBox.Show(syntax); 

            列は、テーブルのメンバーが中に存在するかどうか//見ます
            BOOL hasCol = int.Parse( "" + SqliteHelper.ExecuteScalar( "SELECT COUNT(名前)ここで、名前は= 'メンバーsqlite_masterから
            { 
                //カラム追加:列列名列型ADD TABLEテーブル名をALTER 
                SqliteHelper.ExecuteScalarを( "テーブル部材がCOLUMN sendAccountのVARCHAR(20)を追加変更")。
                //テーブルの学生が列名//该行在SQLiteの中不能用、SQLiteの不支持ドロップドロップ変更
                テーブルのメンバーがsendAccount33"ドロップ//SqliteHelper.ExecuteScalar("alterを)。

            } 

            が存在する場合は、テーブルを削除// 
            文字列s =「」+ SqliteHelper.ExecuteScalarは(「members2が存在する場合、」テーブルを削除)。
            MessageBox.Show(S);

  

 参考ます。https://blog.csdn.net/wuyou1336/article/details/53770799

おすすめ

転載: www.cnblogs.com/wgscd/p/11347173.html