C# ADO.NET_数据库操作的封装

1.App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <connectionStrings>
    <add  name="DBConnStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TestDB;;User ID=sa;Password=admin123;Integrated Security=false;" 
          providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

2.SQLHelper.cs

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


namespace _06.ADO.NET_数据库操作的封装
{
    class SQLHelper
    {
        /// <summary>
        ///     静态方法
        /// </summary>
        /// <param name="sql">insert into t(a1,a2) values(a1,@a2)</param>
        /// <param name="parameters">new SqlParameter("a1", "p1"), new SqlParameter("a2", "p2")</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) 
        {
            String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ToString();
            SqlConnection conn = null;
            using (conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using(SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.Clear();
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return cmd.ExecuteNonQuery();
                }
            }
        }


        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ToString();
            SqlConnection conn = null;
            using (conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.Clear();
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return cmd.ExecuteScalar();
                }
            }
        }


        /// <summary>
        ///     //不能用,用DataSet数据集类来代替
        ///     ExecuteReader()方法根据游标逐一的读取DB服务器中的数据,而不是把数据
        ///     从DB全部取出来放在当前内存中再去读取
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
        {
            String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ToString();
            SqlConnection conn = null;
            using (conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.Clear();
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return cmd.ExecuteReader();
                }
            }
        }


        /// <summary>
        ///     采用DataSet
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ToString();
            SqlConnection conn = null;
            using (conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.Clear();
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    DataSet dataset = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dataset);
                    return dataset.Tables[0];
                }
            }
        }


    }
}

3.Program.cs

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


namespace _06.ADO.NET_数据库操作的封装
{
    class Program
    {
        static void Main(string[] args)
        {
            //调用
            int i = SQLHelper.ExecuteNonQuery("insert into MyTable2(name,age) values(@Name,@Age)",
                new SqlParameter("Name","Nancy"), new SqlParameter("Age",12));
            Console.WriteLine("SQLHelper.ExecuteNonQuery,i={0}", i);


            object obj = SQLHelper.ExecuteScalar("insert into MyTable2(name,age) output inserted.id values(@Name,@Age)",
                new SqlParameter("Name", "Nancy"), new SqlParameter("Age", 12));
            Console.WriteLine("SQLHelper.ExecuteScalar,obj={0}", Convert.ToInt32(obj));


            //SqlDataReader reader = SQLHelper.ExecuteReader("select * from MyTable2 where name=@Name", new SqlParameter("Name", "Arthur"));
            //while (reader.Read())
            //{
            //    //从0开始,根据index获得每一行的值
            //    Console.WriteLine("id={0},name={1}", reader.GetInt32(0), reader.GetString(1));
            //}


            DataTable dt = SQLHelper.ExecuteDataTable("select * from MyTable2 where name=@Name", new SqlParameter("Name", "Arthur"));
            for (int j = 0; j < dt.Rows.Count; j++) 
            {
                DataRow row = dt.Rows[j];
                Console.WriteLine("id={0},name={1}", Convert.ToInt32(row["id"]), Convert.ToString(row["name"]));
            }
            Console.ReadKey();
        }
    }
}


源码地址:源码地址

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页