.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中是:?
因为我的项目中引用这个是用分层来做的,数据与逻辑处理及页面展示是分开的,代码原型并不是这样来操作的,我这样做只是做一个示例,大家在实际运用时可以去进行体会后进行调整。
需要先去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中是:?
因为我的项目中引用这个是用分层来做的,数据与逻辑处理及页面展示是分开的,代码原型并不是这样来操作的,我这样做只是做一个示例,大家在实际运用时可以去进行体会后进行调整。
相关文章推荐
- JDBC复习一(mysql)
- MySQL性能优化的最佳21条经验
- MySQL触发器简单使用
- MySQL如何避免使用swap
- 在EF中使用MySQL的方法及常见问题
- MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析
- MySQL出现SQL Error (2013)连接错误的解决方法
- 所有配置正确,安装成功,但MySQL 服务无法启动(mysql-5.7.13-winx64)
- MYSQL连接函数
- Mysql优化(基础*转载)
- Mysql学习总结
- mysqldump
- 使用LVM快照备份Mysql
- mysql 修改datadir
- MySQL事务
- mysql5.6 TIME,DATETIME,TIMESTAMP
- MYSQL Index Usage
- MYSQL Index Usage
- MySQl之最全且必会的sql语句
- mysql 数据库乱码问题