本文目标:虽然不是专业程序员,由于工作需要,也需要写一点代码,比较长的代码可以分层,其中一个层是数据访问层,用于读写数据库,本人常用mysql,在此总结一下如何实现mysql读写操作。
自己的经验:经常使用动软针对mysql数据库表自动生成的代码,一般说来,先建好数据库的各张表,然后生成“简单【管理】三层”代码,在DBUtility目录下含有所有的数据库操作文件,由于我操作的是mysql数据库,所以只保留mysql数据库操作文件即可,如下图:
核心的mysql操作类是DbHelperMySQL.cs,这个类中需要引用CommandInfo.cs、DESEncrypt.cs和PubConstant.cs三个文件,DESEncrypt.cs用来给字符串(例如数据库连接字符串)加密解密,PubConstant.cs用来从web.config中获取连接字符串。上述这几个文件组成一个类库项目中,项目名称任意,图中项目名称为zy_DBUtility,它们都属于同一个Maticsoft.DBUtility命名空间。
由于感觉DbHelperMySQL.cs对mysql的存储过程操作不太方便,所以又向这个类库项目中添加了mySQlHelper.cs文件,这是我从网上下载的一个mysql数据库操作类,其中的几个方法调用mysql的存储过程比较方便,mySQlHelper.cs和DbHelperMySQL.cs有些功能是重复的,二者可以合并,但是我懒得去搞,同时用着没什么不妥。
再说一下如何从web.config中获取连接字符串,在DbHelperMySQL.cs中,有一条语句如下:
public staticstring connectionString = PubConstant.ConnectionString;
connectionString是静态变量,无需实例化对象就可以直接使用,它通过PubConstant类得到了数据库连接字符串。
其他项目,例如更高层的web网站,只要引用了本类库项目zy_DBUtility,就可以直接本类库中的所有类的方法。
下面分别就使用mySQlHelper.cs和DbHelperMySQL.cs中的方法举例:
1、 使用DbHelperMySQL.cs中的方法:
public static int getUserId(string name, string psw )
{
StringBuilder strSql = newStringBuilder();
strSql.Append("selectjudge_id from judges where judge_name=@judge_name and password=@password ");
MySqlParameter[] parameters ={
new MySqlParameter("@judge_name", MySqlDbType.VarChar,20),
new MySqlParameter("@password", MySqlDbType.VarChar,40),
};
parameters[0].Value =name.Trim();
parameters[1].Value =psw.Trim();
DataSet ds= DbHelperMySQL.Query( strSql.ToString(),parameters);
if (ds.Tables[0].Rows.Count > 0).......
}
2、 使用mySQlHelper.cs中的方法调用已定义的存储过程:
(1) 本方法通过传入参数spName,调用一个存储过程,不需要传入存储过程的参数
public static DataSetgetDataset_StatisticByRoles( string spName )
{
DataSet re = Maticsoft.DBUtility.MySqlHelper.ExecuteDataSet(DbHelperMySQL.connectionString,CommandType.StoredProcedure, spName );
return re;
}
(2) 本方法调用一个存储过程,需要传入参数给存储过程
public staticint delPaperRecord(int judgeId, string whichType_input)
{
MySqlParameter[] parameters = { newMySqlParameter("@judgeId_input", MySqlDbType.Int32) ,new MySqlParameter("@whichType_input",MySqlDbType.VarChar, 20) };//参数数组
parameters[0].Value = judgeId;
parameters[1].Value =whichType_input;
// DbHelperMySQL.connectionString 是在DbHelperMySQL.cs中定义的,由于DbHelperMySQL.c和mySQlHelper.cs都属于同一个类库项目,所以这里可以直接引用
int re= Maticsoft.DBUtility.MySqlHelper.ExecuteNonQuery(DbHelperMySQL.connectionString,CommandType.StoredProcedure, "delPaper", parameters); //delPaper是存储过程名称
returnre;
}
总结:综上所述,为了实现mysql操作,步骤如下:
1、在vs2010解决方案中建立一个数据库操作项目,项目名称假设是zy_DBUtility,将图中5个cs文件都包含在此项目中,同时引用MySql.Data.dll文件。
2、PubConstant.cs中加上usingSystem.Configuration;否则,ConfigurationManager.AppSettings["ConnectionString"]出错,无法读取web.config中的ConnectionString。
3、在解决方案中建立其他项目,例如web项目,引用zy_DBUtility项目,这样就可以zy_DBUtility中的类了。