C#封装对SQL Server和SQLite数据库的操作类

应用程序配置文件存放数据库连接字符串的信息

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <connectionStrings>
    <!--SQL Server数据库连接字符串信息-->
    <add name="connectionStr" connectionString="server=localhost;uid=sa;pwd=YUNWEN0305;datasource=Student"/>
    <!--SQLite数据库连接字符串信息-->
    <add name="conStr" connectionString="data source=D:\项目工程文件夹\尚云网络项目开发\尚云网络\SQLiteData\Sudons.db;version=3"/>
  </connectionStrings>
</configuration>
SQL Server 2014.jpg

对SQL Server数据库操作方法的封装

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
    {
        //获取数据库连接字符串
        public static string GetConnectionString()
        {
            return ConfigurationManager.ConnectionStrings["connectionStr"].ConnectionString;
        }

        #region 封装一个执行SQL返回受影响的行数
        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 封装一个执行SQL返回查询结果中第一行第一列的值
        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 封装一个执行SQL返回一个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 封装一个执行SQL返回一个SqlDataReader
        public static SqlDataReader ExecutedReader(string sqlText, params SqlParameter[] parameters)
        {
            //SqlDataReader要求独占SqlConnection对象,并且SqlConnection必须是Open状态
            SqlConnection con = new SqlConnection(GetConnectionString());
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandText = sqlText;
            cmd.Parameters.AddRange(parameters.ToArray());
            //SqlDataReader执行完成后顺便关闭数据库连接
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        #endregion
    }
}

SQLite.jpg

对SQLite数据库操作方法的封装

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);
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,481评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,838评论 18 399
  • 需要原文的可以留下邮箱我给你发,这里的文章少了很多图,懒得网上粘啦 1数据库基础 1.1数据库定义 1)数据库(D...
    极简纯粹_阅读 7,599评论 0 46
  • 再郑重的告别也逃不开 我们仍将相遇,我想 也许是每天必修的 那一刻,只是 减去了惊悸一霎的惊艳 我们如利刃破风般的...
    Vivalavi阅读 290评论 0 0
  • 昨日青衣作揖 依依惜别 今日孤雁无痕 秋事悲凉 明日的一切 无人知晓 假如生活欺骗了你 要想起清晨明露玉滴的朝气 ...
    明媚竹心阅读 175评论 0 0