Rumah pembangunan bahagian belakang Tutorial C#.Net C#编写SqlHelper类的使用详解

C#编写SqlHelper类的使用详解

Sep 18, 2017 am 11:25 AM
.net

本篇文章主要介绍了使用C#编写SqlHelper类,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

无聊的周末,学习、编码无力。想找点事干但又不知道干点什么,猛然发现自己学过的SqlHelper快忘记了。于是乎虎躯一震心想怎能如此堕落下去,立马打开电脑,双手摸上键盘。写下此文作为学习过程中的复习,并分享出知识(顺便打发时间-^.^-)。

下面开始正文

这里以控制台程序为案例。首先我们需要先配置一下连接字符串,我们需要在app.config文件中增加如下节点:


<connectionStrings>
   <add name="Sql" connectionString="server=数据库地址;uid=用户名;pwd=密码;database=数据库名"/>
  </connectionStrings>
Salin selepas log masuk

1.接着需要创建一个名为SqlHepler类,然后创建一个方法来获取app.config文件中配置的连接字符串。


public static string GetSqlConnectionString()
 {
   return ConfigurationManager.
     ConnectionStrings["Sql"].ConnectionString;
 }
Salin selepas log masuk

2.下面来封装第一个SqlHepler方法,封装一个执行的sql 返回受影响的行数。


 public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters)
{
   using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))  
   {
     using (SqlCommand cmd=conn.CreateCommand())
     {
       conn.Open();  //打开数据库
       cmd.CommandText = sqlText;  //对CommandText进行赋值
       cmd.Parameters.AddRange(parameters);  //对数据库使用参数进行赋值
       return cmd.ExecuteNonQuery();
     }
   }
}
Salin selepas log masuk

参数说明:sqlText:需要执行的sql脚本,parameters:需要的参数集合

该方法主要是用于执行,删除、更新和插入操作,返回受影响的行数。

3.继续封装一个查询操作,返回查询结果中的第一行第一列的值


public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
 {
  using (SqlConnection conn=new SqlConnection(GetSqlConnectionString()))
  {
   using (SqlCommand cmd=conn.CreateCommand())
   {
     conn.Open();
     cmd.CommandText = sqlText;
     cmd.Parameters.AddRange(parameters);
     return cmd.ExecuteScalar();
   }
  }
}
Salin selepas log masuk

参数说明:如上。

该方法的返回值第object,所以当我们查询的数据不知道是什么类型的时候可以使用该类。

4.在封装个常用的查询方法,返回一个DataTable


public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) 
 {
  using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString()))
  {
    DataTable dt = new DataTable();
    adapter.SelectCommand.Parameters.AddRange(parameters);
    adapter.Fill(dt);
    return dt;
   }
}
Salin selepas log masuk

参数说明:如上。

该方法主要用于一些查询数据,dt将被填充查询出来的数据,然后返回数据。

5.最后在写封装一个查询方法,该方法返回的是一个SqlDataReader类型


public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters)
{
   //SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态
   SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还需要连接打开状态
   SqlCommand cmd = conn.CreateCommand();
   conn.Open();
   cmd.CommandText = sqlText;
   cmd.Parameters.AddRange(parameters);
   //CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉
   return cmd.ExecuteReader(CommandBehavior.CloseConnection); 
}
Salin selepas log masuk

参数说明:依旧如上。

该方法返回的SqlDataReader 类型对象需要一直使用SqlConnection对象,所以不能释放。该类型读取数据是一行一行的读取。读取使用的是该类的Read()方法,返回值为bool判断数据是否为空(也就是是否读取到最后一行),该方法将自动读取下到下一条记录。

作为一个初学者,本次只是简单的介绍,并复习了一下SqlHepler类。

附上全部代码:


using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace UserInfoMgr
{
  class SqlHelper
  {
    /// <summary>
    /// 获取连接字符串
    /// </summary>
    /// <returns>连接字符串</returns>
    public static string GetSqlConnectionString()
    {
      return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
    }

    /// <summary>
    /// 封装一个执行的sql 返回受影响的行数
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>受影响的行数</returns>
    public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters)
    {
      using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
      {
        using (SqlCommand cmd=conn.CreateCommand())
        {
          conn.Open();
          cmd.CommandText = sqlText;
          cmd.Parameters.AddRange(parameters);
          return cmd.ExecuteNonQuery();
        }
      }
    }

    /// <summary>
    /// 执行sql,返回查询结果中的第一行第一列的值
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>查询结果中的第一行第一列的值</returns>
    public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
    {
      using (SqlConnection conn=new SqlConnection(GetSqlConnectionString()))
      {
        using (SqlCommand cmd=conn.CreateCommand())
        {
          conn.Open();
          cmd.CommandText = sqlText;
          cmd.Parameters.AddRange(parameters);
          return cmd.ExecuteScalar();
        }
      }
    }

    /// <summary>
    /// 执行sql 返回一个DataTable
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>返回一个DataTable</returns>
    public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) 
    {
      using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString()))
      {
        DataTable dt = new DataTable();
        adapter.SelectCommand.Parameters.AddRange(parameters);
        adapter.Fill(dt);
        return dt;
      }
    }

    /// <summary>
    /// 执行sql脚本
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>返回一个SqlDataReader</returns>
    public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters)
    {
      //SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态
      SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还需要连接打开状态
      SqlCommand cmd = conn.CreateCommand();
      conn.Open();
      cmd.CommandText = sqlText;
      cmd.Parameters.AddRange(parameters);
      //CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉
      return cmd.ExecuteReader(CommandBehavior.CloseConnection); 
    }
  }
}
Salin selepas log masuk

Atas ialah kandungan terperinci C#编写SqlHelper类的使用详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah prospek pekerjaan C#? Apakah prospek pekerjaan C#? Oct 19, 2023 am 11:02 AM

Sama ada anda seorang pemula atau profesional yang berpengalaman, menguasai C# akan membuka jalan untuk kerjaya anda.

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET May 06, 2024 pm 04:43 PM

Perkembangan teknologi kecerdasan buatan (AI) sedang giat dijalankan hari ini, dan ia telah menunjukkan potensi dan pengaruh yang besar dalam pelbagai bidang. Hari ini Dayao akan berkongsi dengan anda 4 rangka kerja projek berkaitan LLM model AI sumber terbuka .NET, dengan harapan dapat memberi anda sedikit rujukan. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ialah kit pembangunan perisian sumber terbuka (SDK) yang direka untuk menyepadukan model bahasa besar (LLM) seperti OpenAI, Azure

Teknologi pengoptimuman prestasi .NET untuk pembangun Teknologi pengoptimuman prestasi .NET untuk pembangun Sep 12, 2023 am 10:43 AM

Jika anda seorang pembangun .NET, anda mesti sedar tentang kepentingan mengoptimumkan fungsi dan prestasi dalam menyampaikan perisian berkualiti tinggi. Dengan menggunakan pakar sumber yang disediakan dan mengurangkan masa memuatkan tapak web, anda bukan sahaja mencipta pengalaman yang menyenangkan untuk pengguna anda tetapi juga mengurangkan kos infrastruktur.

Perbezaan prestasi antara rangka kerja Java dan rangka kerja .NET Perbezaan prestasi antara rangka kerja Java dan rangka kerja .NET Jun 03, 2024 am 09:19 AM

Dari segi pemprosesan permintaan selaras tinggi, .NETASP.NETCoreWebAPI berprestasi lebih baik daripada JavaSpringMVC Sebabnya termasuk: Kompilasi awal AOT, yang mengurangkan masa permulaan pengurusan memori, di mana pembangun bertanggungjawab untuk memperuntukkan dan melepaskan memori objek.

C# .NET Soalan & Jawapan Wawancara: Tahap kepakaran anda C# .NET Soalan & Jawapan Wawancara: Tahap kepakaran anda Apr 07, 2025 am 12:01 AM

C#.NET Soalan dan jawapan wawancara termasuk pengetahuan asas, konsep teras, dan penggunaan lanjutan. 1) Pengetahuan asas: C# adalah bahasa berorientasikan objek yang dibangunkan oleh Microsoft dan digunakan terutamanya dalam rangka .NET. 2) Konsep teras: Delegasi dan peristiwa membolehkan kaedah mengikat dinamik, dan LINQ menyediakan fungsi pertanyaan yang kuat. 3) Penggunaan Lanjutan: Pengaturcaraan Asynchronous meningkatkan respons, dan pokok ekspresi digunakan untuk pembinaan kod dinamik.

Advanced C# .NET Tutorial: Ace Wawancara Pemaju Kanan Anda Seterusnya Advanced C# .NET Tutorial: Ace Wawancara Pemaju Kanan Anda Seterusnya Apr 08, 2025 am 12:06 AM

Temu bual dengan pemaju kanan C# memerlukan menguasai pengetahuan teras seperti pengaturcaraan asynchronous, LINQ, dan prinsip kerja dalaman Rangka .NET. 1. Pengaturcaraan Asynchronous memudahkan operasi melalui async dan menunggu untuk meningkatkan respons aplikasi. 2.Linq mengendalikan data dalam gaya SQL dan perhatikan prestasi. 3. CLR kerangka bersih menguruskan ingatan, dan pengumpulan sampah perlu digunakan dengan berhati -hati.

C# .NET: Meneroka Konsep Teras dan Asas Pengaturcaraan C# .NET: Meneroka Konsep Teras dan Asas Pengaturcaraan Apr 10, 2025 am 09:32 AM

C# adalah bahasa pengaturcaraan yang berorientasikan objek moden yang dibangunkan oleh Microsoft dan sebagai sebahagian daripada Rangka Kerja .NET. 1.C# menyokong pengaturcaraan berorientasikan objek (OOP), termasuk enkapsulasi, warisan dan polimorfisme. 2. Pengaturcaraan Asynchronous dalam C# dilaksanakan melalui Async dan menunggu kata kunci untuk meningkatkan respons aplikasi. 3. Gunakan LINQ untuk memproses koleksi data dengan ringkas. 4. Kesilapan umum termasuk pengecualian rujukan null dan pengecualian indeks luar. Kemahiran penyahpepijatan termasuk menggunakan debugger dan pengendalian pengecualian. 5. Pengoptimuman Prestasi termasuk menggunakan StringBuilder dan mengelakkan pembungkusan yang tidak perlu dan unboxing.

C# kod dalam .NET: Meneroka proses pengaturcaraan C# kod dalam .NET: Meneroka proses pengaturcaraan Apr 12, 2025 am 12:02 AM

Proses pengaturcaraan C# dalam .NET termasuk langkah -langkah berikut: 1) Menulis C# Code, 2) Menyusun bahasa pertengahan (IL), dan 3) yang dilaksanakan oleh Runtime .NET (CLR). Kelebihan C# dalam .NET adalah sintaks moden, sistem jenis yang kuat dan integrasi yang ketat dengan Rangka Kerja .NET, sesuai untuk pelbagai senario pembangunan dari aplikasi desktop ke perkhidmatan web.

See all articles