您的位置:首页 > 数据库 > MySQL

.Net+MySQL的开发(数据库访问)

2016-06-27 08:11 507 查看
代码如下:
需要先去MySQL的官方网站下载MySQL的.Net链接包MySQL
Connector/Net 1.0 ,并将其引用至当前项目中。

数据库访问类:SqlHelper.cs

/// .Net访问MYSQL数据库类
/// http://blog.hnce.net
using System;
using System.Data;

using MySql.Data.MySqlClient;

namespace MySQLDAL
{
    /// <summary>
    /// SqlHelper 的摘要说明。
    /// </summary>
    public class SqlHelper
    {

        public static readonly string CONN_STR = GetConnString.GetMySqlConnString();      
        //此处可以直接写上MySQL数据库链接字符串,如:
       //"Data Source=127.0.0.1;User ID=slick;Password=123456;DataBase=test"

        public SqlHelper()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        /// <summary>
        /// 用提供的函数,执行SQL命令,返回一个从指定连接的数据库记录集
        /// </summary>
        /// <param name="connectionString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="commandType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="commandText">SQL语句或存储过程</param>
        /// <param name="commandParameters">SqlParameter[]参数数组</param>
        /// <returns>SqlDataReader:执行结果的记录集</returns>
        public static MySqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms) 
        {
            MySqlCommand cmd = new MySqlCommand();
            MySqlConnection conn = new MySqlConnection(connString);

            // 我们在这里用 try/catch 是因为如果这个方法抛出异常,我们目的是关闭数据库连接,再抛出异常,
            // 因为这时不会有DataReader存在,此后commandBehaviour.CloseConnection将不会工作。
            try 
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
                MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return rdr;
            }
            catch 
            {
                conn.Close();
                throw;
            }
        }

        /// <summary>
        /// 用提供的函数,执行SQL命令,返回一个从指定连接的数据库记录集
        /// </summary>
        /// <param name="connectionString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="commandType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="commandText">SQL语句或存储过程</param>
        /// <returns>SqlDataReader:执行结果的记录集</returns>
        public static MySqlDataReader ExecuteReader(string connString, CommandType cmdType,string cmdText)
        {
            return ExecuteReader(connString,cmdType,cmdText,(MySqlParameter[])null);
        }

        /// <summary>
        /// 用提供的方法,执行带参数的SQL命令,返回值为该命令所影响的行数
        /// </summary>
        /// <param name="connString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句或存储过程</param>
        /// <param name="cmdParameters">SQL语句所带的参数集</param>
        /// <returns>int:该命令所影响的行数</returns>
        public static int ExecuteNonQuery(string connString,CommandType cmdType,string cmdText, params MySqlParameter[] cmdParameters)
        {
            
            MySqlCommand cmd = new MySqlCommand();

            using (MySqlConnection conn = new MySqlConnection(connString)) 
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }

        /// <summary>
        /// 用提供的方法,执行SQL命令,返回值为该命令所影响的行数
        /// </summary>
        /// <param name="connString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句或存储过程</param>
        /// <returns>int:该命令所影响的行数</returns>
        public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText)
        {
            return ExecuteNonQuery(connString, cmdType, cmdText, (MySqlParameter[])null);
        }
        

        /// <summary>
        /// 用提供的方法,执行带参数的SQL命令,返回值为结果集中第一行的第一列或空引用(如果结果集为空)。
        /// </summary>
        /// <param name="connString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句或存储过程</param>
        /// <param name="cmdParameters">SQL语句所带的参数集</param>
        /// <returns></returns>
        public static string ExecuteScalar(string connString,CommandType cmdType,string cmdText,params MySqlParameter[] cmdParameters)
        {
            MySqlCommand cmd = new MySqlCommand();
            using(MySqlConnection conn = new MySqlConnection(connString))
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParameters);
                return cmd.ExecuteScalar().ToString();
            }
            
        }

        /// <summary>
        /// 用提供的方法,执行SQL命令,返回值为结果集中第一行的第一列或空引用(如果结果集为空)。
        /// </summary>
        /// <param name="connString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句或存储过程</param>
        /// <returns></returns>
        public static string ExecuteScalar(string connString,CommandType cmdType,string cmdText)
        {
            return ExecuteScalar(connString,cmdType,cmdText,(MySqlParameter[])null);
        }

        /// <summary>
        /// 用提供的方法,执行带参数的SQL命令,返回值为DataSet数据集
        /// </summary>
        /// <param name="connString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句或存储过程</param>
        /// <param name="cmdParameters">SQL语句所带的参数集</param>
        /// <returns>Datat:该命令的结果集</returns>
        public static DataSet ExecuteDataSet(string connString,CommandType cmdType,string cmdText,params MySqlParameter[] cmdParameters)
        {
            MySqlCommand cmd = new MySqlCommand();
            
            using(MySqlConnection conn = new MySqlConnection(connString))
            {
            
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParameters);
                MySqlDataAdapter ada = new MySqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                ada.Fill(ds);
                cmd.Parameters.Clear();
                return ds;
            }
        }

        /// <summary>
        /// 用提供的方法,执行SQL命令,返回值为DataSet数据集
        /// </summary>
        /// <param name="connString">SqlConnection有效的SQL连接字符串</param>
        /// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句或存储过程</param>
        /// <returns>Datat:该命令的结果集</returns>
        public static DataSet ExecuteDataSet(string connString,CommandType cmdType,string cmdText)
        {
            return ExecuteDataSet(connString,cmdType,cmdText,(MySqlParameter[])null);
        }

        /// <summary>
        /// 为执行命令做好准备:打开数据库连接,命令语句,设置命令类型(SQL语句或存储过程),函数语取。
        /// </summary>
        /// <param name="cmd">SqlCommand 组件</param>
        /// <param name="conn">SqlConnection 组件</param>
        /// <param name="trans">SqlTransaction 组件,可以为null</param>
        /// <param name="cmdType">语句类型:CommandType.Text、CommandType.StoredProcedure</param>
        /// <param name="cmdText">SQL语句,可以为存储过程</param>
        /// <param name="cmdParms">SQL参数数组 private</param>
        public static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms) 
        {

            if (conn.State != ConnectionState.Open)
                conn.Open();

            cmd.Connection = conn;
            cmd.CommandText = cmdText;
 
            if (trans != null)
                cmd.Transaction = trans;

            cmd.CommandType = cmdType;

            if (cmdParms != null) 
            {
                foreach (MySqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }
    }
}

读取数据:WebForm1.aspx.cs
using System;
using System.Data;
using MySQLDAL;

public const string SQL_SELECT_CONTENT = "SELECT catid,username,subject FROM supe_spaceitems";

public DataSet Get_DataSet()
{
            return SqlHelper.ExecuteDataSet(SqlHelper.CONN_STR,CommandType.Text,SQL_SELECT_CONTENT);
 }

        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            DataGrid1.DataSource = Get_DataSet();
            DataGrid1.DataBind();

        }

可以通过上面的SqlHelper.cs来实现诸如插、删、查等功能。以上只是一个普通查询,也可以实现带参数的查询,需要注意的是SQL SERVER的参数符号为:@ 而在MySQL中是:?

因为我的项目中引用这个是用分层来做的,数据与逻辑处理及页面展示是分开的,代码原型并不是这样来操作的,我这样做只是做一个示例,大家在实际运用时可以去进行体会后进行调整。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: