好像asp.net对SQLServer2000、ACCESS、以及Oracle数据库的支持相当不错。可惜这次公司要使用mysql数据库了。
翻来找去找对mysql数据库访问的例子,好像都是使用什么ODBC的,总之配什么ODBC什么的在灵活开发里确实显得毕竟死板,只好找找看看有没有和微软的sqlhelper类库一样的访问类库。真是功夫不负有心人,找到几个。后来发现都是根据MySql官方的网站上进行修改。
想到这里,我自己没事也来修改成和SqlHelper类似的使用方法的类库了。加了对MySqlTransaction的支持。反正也是瞎改的玩了。^_^
下载地址:/Files/zsxfbj/mySql/src.rar
一些用法也和SqlHelper基本一样:
public void Insert( SiteInfo site )
{
MySqlParameter[] parms = getSqlParms( site );
using ( MySqlConnection conn = new MySqlConnection( MySqlConnString.CONN_STRING_NON_DTC) )
{
conn.Open();
using ( MySqlTransaction trans = conn.BeginTransaction() )
{
try
{
MySqlHelper.ExecuteNonQuery( trans, SQL_INSERT_SITE, parms );
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name="site"></param>
/// <param name="siteId"></param>
/// <returns></returns>
private MySqlParameter[] getSqlParms( SiteInfo site )
{
MySqlParameter[] parms = null;
if( ParamsCache.GetCachedParameterSet( MySqlConnString.CONN_STRING_NON_DTC, "SqlParms_SiteInfo", out parms ) )
{
MySqlHelper.AssignParameterValues( parms, site.SiteName, site.Description, site.Application, site.IsDisabled, Transform.Serialize( site.Settings ), site.Version, site.SortOrder );
}
else
{
parms = new MySqlParameter[]
{
new MySqlParameter( PARM_SITENAME, MySqlDbType.VarChar, 64 ),
new MySqlParameter( PARM_DESCRIPTION, MySqlDbType.VarChar, 255 ),
new MySqlParameter( PARM_APPLICATION, MySqlDbType.VarChar, 255 ),
new MySqlParameter( PARM_ISDISABLED, MySqlDbType.Int32 ),
new MySqlParameter( PARM_SETTINGS, MySqlDbType.Blob ),
new MySqlParameter( PARM_VERSION, MySqlDbType.VarChar, 64 ),
new MySqlParameter( PARM_SORTORDER, MySqlDbType.Int32 )
};
parms[0].Value = site.SiteName;
parms[1].Value = site.Description;
parms[2].Value = site.Application;
parms[3].Value = site.IsDisabled;
parms[4].Value = Transform.Serialize( site.Settings );
parms[5].Value = site.Version;
parms[6].Value = site.SortOrder;
ParamsCache.CacheParameterSet( MySqlConnString.CONN_STRING_NON_DTC, "SqlParms_SiteInfo", parms );
}
return parms;
}