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
    声明: 本文版权归作者和博客园共有。转载时必须保留此段声明,且在文章页面明显位置给出原文连接地址!
  • 相关阅读:
    实习的一些感想,感触,心得体会
    一张优惠券引发的血案(redis并发安全问题)
    Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
    Redis 集群
    Maven Pom文件标签详解
    Google Guava 基本工具
    context:component-scan的使用说明
    logback的简单分析
    轮询和长轮询
    StringUtils中 isNotEmpty 和isNotBlank的区别?
  • 原文地址:https://www.cnblogs.com/xugang/p/914056.html
Copyright © 2011-2022 走看看