.Net+MySQL的开发(数据库访问)收藏
新一篇: 移动数据库开发教程 | 旧一篇: 用.Net开发DB2数据库应用程序 (1)
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>代码如下:需要先去 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中是:?
因为我的项目中引用这个是用分层来做的,数据与逻辑处理及页面展示是分开的,代码原型并不是这样来操作的,我这样做只是做一个示例,大家在实际运用时可以去进行体会后进行调整