dbhelper類,連接數據庫

這裏的類名叫ClsDbOper:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;

///
/// ClsDbOper 的摘要說明
///
public class ClsDbOper
{
    public static string strSqlConn = System.Configuration.ConfigurationSettings.AppSettings["DbConnString"];// "Data Source=.;Initial Catalog=Test;User Id=sa;Password=123;";//
    ///
    /// 執行sql語句
    ///
    /// 需要執行的SQL
    /// 對於 UPDATE、INSERT 和 DELETE 語句,返回值爲該命令所影響的行數。
    ///           對於 CREATE TABLE 和 DROP TABLE 語句,返回值爲 0。
    ///           對於所有其他類型的語句,返回值爲 -1。
    public static int ExcSQL(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        try
        {
            Conn.Open();
            SqlCommand sqlCmd = new SqlCommand(sql, Conn);
            int val = sqlCmd.ExecuteNonQuery();
            return val;
        }
        finally
        {
            Conn.Close();
            Conn.Dispose();
        }
    }
    ///
    /// 按sql語句返回DataReader
    ///
    ///
    ///
    public static SqlDataReader GetDataReader(string sql)
    {
        try
        {
            SqlConnection Conn = new SqlConnection(strSqlConn);
            SqlCommand SqlCmd = new SqlCommand(sql, Conn);
            Conn.Open();
            SqlDataReader sqlDr = SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
            return sqlDr;
        }
        catch (Exception ex)
        {
            throw (ex);
        }
    }
    public static DataView GetGrid(string Sql, string Tb)
    {

        DataSet DS;
        SqlConnection Conn = new SqlConnection(strSqlConn);
        SqlDataAdapter myCommand = new SqlDataAdapter(Sql, Conn);
        DS = new DataSet();
        myCommand.Fill(DS, Tb);
        DataView result = DS.Tables[Tb].DefaultView;
        return result;
    }
    public static object GetSqlDataSource(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        try
        {
            Conn.Open();
            SqlCommand SqlCmd = new SqlCommand(sql, Conn);
            object val = SqlCmd.ExecuteScalar();
            return val;
        }
        finally
        {
            Conn.Close();
            Conn.Dispose();
        }
    }
    ///
    /// 根據SQL獲得單一的值
    ///
    ///
    ///
    public static string GetSingleValue(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        try
        {
            SqlCommand sqlCmd = new SqlCommand(sql, Conn);
            Conn.Open();
            object val = sqlCmd.ExecuteScalar();
            string GetValue = Convert.ToString(val);
            return GetValue;
        }
        finally
        {
            Conn.Close();
            Conn.Dispose();
        }
    }

    ///
    /// 根據SQL獲得單一的值
    ///
    ///
    ///
    public static object GetSingleObject(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        try
        {
            SqlCommand sqlCmd = new SqlCommand(sql, Conn);
            Conn.Open();
            object val = sqlCmd.ExecuteScalar();
            return val;
        }
        finally
        {
            Conn.Close();
            Conn.Dispose();
        }
    }

    ///
    /// 按sql語句返回DataSet
    ///
    ///
    /// 返回DataSet,可以填充DataView等
    public static DataSet GetDataSet(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        try
        {
            DataSet ds = new DataSet();
            Conn.Open();
            SqlDataAdapter sqlDa = new SqlDataAdapter(sql, Conn);
            sqlDa.Fill(ds);
            return ds;
        }
        finally
        {
            Conn.Close();
            Conn.Dispose();
        }
    }

    ///
    /// 按sql語句返回DataTable,如果沒有數據,則第一行是空行
    ///
    ///
    ///
    public static DataTable GetDataTable(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        Conn.Open();
        DataTable dt = new DataTable();
        DataSet ds = new DataSet();
        try
        {
            ds = GetDataSet(sql);
            dt = ds.Tables[0];
            if (ds.Tables[0].Rows.Count == 0)
            {
                DataRow dr = dt.NewRow();
                dt.Rows.Add(dr);
            }
            return dt;
        }
        finally
        {
            ds.Dispose();
            Conn.Close();
            Conn.Dispose();
        }
    }
    ///
    /// 按sql語句返回DataTable
    ///
    ///
    ///
    public static DataTable GetDataTableNoEmpty(string sql)
    {
        SqlConnection Conn = new SqlConnection(strSqlConn);
        Conn.Open();
        DataSet ds = new DataSet();
        try
        {
            ds = GetDataSet(sql);
            return ds.Tables[0];
        }
        finally
        {
            ds.Dispose();
            Conn.Close();
            Conn.Dispose();
        }
    }


//1 上帝說,要連接數據庫,於是就有了sqlconnection (數據庫連接,配置連接字符串等,用戶名密碼之類)

//2 上帝說,要執行sql語句。於是就有了sqlcommand, 直接翻譯成sql命令。每個sqlcommand都有commandtext跟parameters 文本跟參數。填寫好這個命令,然後execute去執行。當然,要確保連接是open的才能執行。沒連接啥都幹不了。

//3 上帝認爲要有辦法讀取返回結果,於是便有了datareader.可以一條一條的讀取(read)直到最後一條。

//4 上帝認爲,把執行的結果找個地方存起來是好的。於是就有了dataset。這個東西很完美,基本上能存各種數據跟關係,比datareader方便很多。裏面有一個一個的dataview跟datatable.針對你的查詢結果,當然,datatable又可以從datarow一個一個的循環取得

//5 上帝覺得上述步驟太複雜了 -_-! 
//於是便有了SqlDataAdapter (翻譯爲SQL數據適配器,適配器模式) 它來封裝簡化了上述步驟。你只要new出來一個sqldataadapter,給他填上語句,直接fill到dataset就行了。這樣你什麼都有了,只需要兩步!

//6 微軟覺得,可視化的東西是上帝喜歡的(用戶==上帝)
//於是有了一個一個的SqlAdapter控件,DataSet控件,GridView控件....你可以直接拖到你的窗口(WinForm)或者頁面(Asp.Net Web Application等)設置幾個屬性,綁定即可。一行代碼都不用寫。以至於普通網管跟文員都能成爲潛在用戶。(雖然這種方式被“專業程序員”所不齒)

//7建議:
//如果喜歡效率的,用command+datareader自己處理(要小心別弄得更差哦)
//如果喜歡方便的,就大量的使用Adapter+DataSet吧。畢竟綁定太節約時間了
//如果就想顯示個數據而已...拖吧...反正你就是想給隔壁辦公室顯示個報表。幹嘛想那麼多。

 

 

 

 

再添加一個App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="DbConnString" value="Data Source=.;Initial Catalog=DA;User Id=sa;Password=123321;" />
  </appSettings>
<connectionStrings><add name="DAEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&amp;quot;data source=WINZQ-20160302U;initial catalog=DA;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章