zoukankan      html  css  js  c++  java
  • 我的MySql 数据访问层


    如今,基于.net的一些ORM之类的数据访问层的东东好象挺火的(LINQ之类的),但是鄙人却还对他的好还没有彻底看出个端倪来,用在鄙人的项目中总感觉有些杀鸡焉用牛刀的感觉。

    我也看过金色海洋Blog里的关于数据访问层的一些代码,很谦虚的说,应该比我的要好,可是却总让人感觉很烦琐,所以我并没有改用他的,而是在他的想法上自己也凑合着写了一个。^ - ^


    我把它放在了项目的 App_Code 文件夹中,并通过 using MySql.Data.MySqlClient; 来引用MySql的数据库引擎DLL文件就OK啦!

    using MySql.Data.MySqlClient;

    //比如,我要得到GridView的数据集
    string Myselect = "select cpuinfo,count(cpuinfo)'number' from HARDWAREINFO";
             Myselect
    += "where orgid like '" + orgid + "' group by cpuinfo order by number desc";
    myDataTable cesTable 
    = new myDataTable(Myselect);
    cpu_GridView.DataSource 
    = cesTable.myTable();
    cpu_GridView.DataBind();

    //比如,我要得到执行数据库操作
      protected void InsertView(string suborgid, string orgname, string orgtype, string abs)
        
    {
            
    string norgid = GetOrgid();
            
    string Insertsql = "insert into ORGINFO values('" + orgid + "', '" + orgname + "', '" + norgid + "', '" + orgtype + "', '" + abs + "')";

            myDataTable myTable 
    = new myDataTable(Insertsql);
          
    try
          
    {  
            myTable.mysql_EXE();
          }

          
    catch (Exception e)
          
    {
             
          }

    }


    附:
    myDataTable.cs
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    //Myself using
    using MySql.Data.MySqlClient;
    using System.Web.Configuration;
    /**//// <summary>
    /// myDataTable 的摘要说明
    /// </summary>
    public class myDataTable
    {
        
    public string Client_Str;

        
    public myDataTable(string My_str)
        {
            
    //
            
    // TODO: 在此处添加构造函数逻辑
            
    //
         Client_Str=My_str;  //通过构造函数传递strng给class类的全局变量strng;
        }
        
    public void mysql_EXE()   //执行SQL但不返回数据
        {
            
    string myConn_str = WebConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString;
            MySqlConnection myConn 
    = new MySqlConnection(myConn_str);
            MySqlCommand myComm 
    = new MySqlCommand(Client_Str);
            
    //myConn.Open();
            myComm.Connection = myConn;
            
    try
            {
                
    if (myComm.Connection.State.ToString() == "Closed") myComm.Connection.Open();
                myComm.ExecuteNonQuery();
            }
            
    catch(Exception ex)
            {
               Session[
    "Error"=ex.ToString();
               Response.Redirect(
    "error.aspx");
            }
            
    finally
            {
                myComm.Dispose();
                myComm.Connection.Close();
                myConn.Dispose();
                myConn.Close();
            }
            
    //myConn.Close();
        }
        
    public DataTable myTable() //执行SQL并返回DataTable数据
        {
            
    string myConn_str = WebConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString;
            MySqlConnection myConn 
    = new MySqlConnection(myConn_str);
            MySqlCommand myComm 
    = new MySqlCommand(Client_Str);
            
    //myConn.Open();
            myComm.Connection = myConn;
            
    try
            {
                
    if (myComm.Connection.State.ToString() == "Closed") myComm.Connection.Open();
                myComm.ExecuteNonQuery();
            }
            
    catch(Exception ex)
            {
               Session[
    "Error"=ex.ToString();
               Response.Redirect(
    "error.aspx");
            }
            
    finally
            {
                myComm.Dispose();
                myComm.Connection.Close();
                myConn.Dispose();
                myConn.Close();
            }
            
    //myConn.Close();
            MySqlDataAdapter myAdapter = new MySqlDataAdapter(myComm);
            DataTable table 
    = new DataTable();
            myAdapter.Fill(table);
            
    return table;
        }
        
    public void Delete_procedure()  //“删除”的存储过程
        {
            
    string str_orgid = Client_Str;  //获得orgid
            string myConn_str = WebConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString;
            MySqlConnection myConn 
    = new MySqlConnection(myConn_str);
            MySqlCommand myComm 
    = new MySqlCommand("DELETEDB", myConn);//(Client_Str);
            
    //myComm.Connection = myConn;
            try
            {
                
    if (myComm.Connection.State.ToString() == "Closed") myComm.Connection.Open();
                myComm.CommandType 
    = CommandType.StoredProcedure;
                MySqlParameter myParameter;
                myParameter 
    = new MySqlParameter("?m_orgid", MySqlDbType.String);
                myParameter.Value 
    = str_orgid;
                myParameter.Direction 
    = ParameterDirection.Input;
                myComm.Parameters.Add(myParameter);

                
    //myComm.CommandText = "DELETEDB"; //存储过程名
                
    //myComm.Parameters.Add("m_orgid", str_orgid);
                myComm.ExecuteNonQuery();
            }
            
    catch(Exception ex)
            {
               Session[
    "Error"=ex.ToString();
               Response.Redirect(
    "error.aspx");
            }
            
    finally
            {
                myComm.Dispose();
                myComm.Connection.Close();
                myConn.Dispose();
                myConn.Close();
            }
        }
        
    public int My_ExecuteScalar()  //执行SQL并返回int记录数
        {
            
    string str_orgid = Client_Str;  //获得orgid
            int Re_result = 0;
            
    string myConn_str = WebConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString;
            MySqlConnection myConn 
    = new MySqlConnection(myConn_str);
            MySqlCommand myComm 
    = new MySqlCommand(Client_Str,myConn);
            
    try
            {
                
    if (myComm.Connection.State.ToString() == "Closed") myComm.Connection.Open();
                
    //cmd.CommandText = "select count(*) from region";
                
    //Int32 count = (int32)cmd.ExecuteScalar();
                Re_result = Convert.ToInt32(myComm.ExecuteScalar());
            }
            
    catch(Exception ex)
            {
               Session[
    "Error"=ex.ToString();
               Response.Redirect(
    "error.aspx");
            }
            
    finally
            {
                myComm.Dispose();
                myComm.Connection.Close();
                myConn.Dispose();
                myConn.Close();
            }
            
    return Re_result;
        }
    }
    作者: XuGang   网名:钢钢
    出处: http://xugang.cnblogs.com
    声明: 本文版权归作者和博客园共有。转载时必须保留此段声明,且在文章页面明显位置给出原文连接地址!
  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/xugang/p/914056.html
Copyright © 2011-2022 走看看