代码如下: 需要先去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中是:?
因为我的项目中引用这个是用分层来做的,数据与逻辑处理及页面展示是分开的,代码原型并不是这样来操作的,我这样做只是做一个示例,大家在实际运用时可以去进行体会后进行调整。
|