C#封裝對SQL Server和SQLite數(shù)據(jù)庫的操作類

應(yīng)用程序配置文件存放數(shù)據(jù)庫連接字符串的信息

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <connectionStrings>
    <!--SQL Server數(shù)據(jù)庫連接字符串信息-->
    <add name="connectionStr" connectionString="server=localhost;uid=sa;pwd=YUNWEN0305;datasource=Student"/>
    <!--SQLite數(shù)據(jù)庫連接字符串信息-->
    <add name="conStr" connectionString="data source=D:\項(xiàng)目工程文件夾\尚云網(wǎng)絡(luò)項(xiàng)目開發(fā)\尚云網(wǎng)絡(luò)\SQLiteData\Sudons.db;version=3"/>
  </connectionStrings>
</configuration>
SQL Server 2014.jpg

對SQL Server數(shù)據(jù)庫操作方法的封裝

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;

namespace FuHello
{
    public static class sqlHelper
    {
        //獲取數(shù)據(jù)庫連接字符串
        public static string GetConnectionString()
        {
            return ConfigurationManager.ConnectionStrings["connectionStr"].ConnectionString;
        }

        #region 封裝一個(gè)執(zhí)行SQL返回受影響的行數(shù)
        public static int ExecuteNoQuery(string sqlText, params SqlParameter[] parameters)
        {
            using (SqlConnection con = new SqlConnection(GetConnectionString()))
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    con.Open();
                    cmd.CommandText = sqlText;
                    cmd.Parameters.AddRange(parameters.ToArray());
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        #endregion

        #region 封裝一個(gè)執(zhí)行SQL返回查詢結(jié)果中第一行第一列的值
        public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
        {
            using (SqlConnection con = new SqlConnection(GetConnectionString()))
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    con.Open();
                    cmd.CommandText = sqlText;
                    cmd.Parameters.AddRange(parameters.ToArray());
                    return cmd.ExecuteScalar();
                }
            }
        }
        #endregion

        #region 封裝一個(gè)執(zhí)行SQL返回一個(gè)DataTable
        public static DataTable GetDataTable(string sqlText, params SqlParameter[] parameters)
        {
            using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText, GetConnectionString()))
            {

                DataTable dt = new DataTable();
                adapter.SelectCommand.Parameters.AddRange(parameters.ToArray());
                adapter.Fill(dt);
                return dt;
            }
        }
        #endregion

        #region 封裝一個(gè)執(zhí)行SQL返回一個(gè)SqlDataReader
        public static SqlDataReader ExecutedReader(string sqlText, params SqlParameter[] parameters)
        {
            //SqlDataReader要求獨(dú)占SqlConnection對象,并且SqlConnection必須是Open狀態(tài)
            SqlConnection con = new SqlConnection(GetConnectionString());
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandText = sqlText;
            cmd.Parameters.AddRange(parameters.ToArray());
            //SqlDataReader執(zhí)行完成后順便關(guān)閉數(shù)據(jù)庫連接
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        #endregion
    }
}

SQLite.jpg

對SQLite數(shù)據(jù)庫操作方法的封裝

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data.SQLite;
using System.Configuration;
using System.Data;

namespace FuHello
{
    public static class sqliteHelper
    {
        //從配置文本中讀取連接字符串的方法封裝
        public static string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;

        public static int ExecuteNoNQuery(string sql,params SQLiteParameter[] sParameters)
        {
            using (SQLiteConnection con = new SQLiteConnection(conStr))
            {
                con.Open();
                SQLiteCommand cmd = con.CreateCommand();
                cmd.CommandText = sql;
                cmd.Parameters.AddRange(sParameters);
                return cmd.ExecuteNonQuery();
            }
        }

        public static object ExecuteScalar(string sql,params SQLiteParameter[] sParameters)
        {
            using (SQLiteConnection con = new SQLiteConnection(conStr))
            {
                con.Open();
                SQLiteCommand cmd = new SQLiteCommand(sql, con);
                cmd.Parameters.AddRange(sParameters);
                return cmd.ExecuteScalar();
            }
        }

        public static DataTable GetDataTable(string sql,params SQLiteParameter[] sParameters)
        {
            using (SQLiteConnection con = new SQLiteConnection(conStr))
            {
                con.Open();
                SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql,con);
                adapter.SelectCommand.Parameters.AddRange(sParameters);
                DataTable td = new DataTable();
                adapter.Fill(td);
                return td;
                
            }
        }

        public static SQLiteDataReader ExecuteReader(string sql,params SQLiteParameter[] sParameters)
        {
            SQLiteConnection con = new SQLiteConnection(conStr);
            con.Open();
            SQLiteCommand cmd = new SQLiteCommand(sql, con);
            cmd.Parameters.AddRange(sParameters);
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,302評論 25 708
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 需要原文的可以留下郵箱我給你發(fā),這里的文章少了很多圖,懶得網(wǎng)上粘啦 1數(shù)據(jù)庫基礎(chǔ) 1.1數(shù)據(jù)庫定義 1)數(shù)據(jù)庫(D...
    極簡純粹_閱讀 7,500評論 0 46
  • 再鄭重的告別也逃不開 我們?nèi)詫⑾嘤觯蚁?也許是每天必修的 那一刻,只是 減去了驚悸一霎的驚艷 我們?nèi)缋衅骑L(fēng)般的...
    Vivalavi閱讀 283評論 0 0
  • 昨日青衣作揖 依依惜別 今日孤雁無痕 秋事悲涼 明日的一切 無人知曉 假如生活欺騙了你 要想起清晨明露玉滴的朝氣 ...
    明媚竹心閱讀 168評論 0 0