C#需要从Access数据库读取数据插入Mysql数据库,发生System.TypeInitializationException”类型的未经处理的异常

qq_40422507 2018-01-19 01:30:33
其他信息: “SerialPortTool.MySqlHelper”的类型初始值设定项引发异常。
这边Access必须在x86的运行环境下才能读取数据,但是x86下的mysql插入数据会报这个错误,我换了一个32位的数据库,找了好几个mysql.data.dll文件还是在插入时报错,想咨询下应该怎么解决。另外,我的c#框架时.netframework 3.5.
public class MySqlHelper
{
#region 返回一个连接字符串
/// <summary>
/// 返回一个连接字符串
/// </summary>
/// <returns></returns>
public static string GetSqlConnectionString()
{
// string constructorString = "server=localhost;User Id=root;password=;Database=company";
//return "server=localhost;User Id=root;password=toor;Database=xst_lis";
return ReadXml.GetConnStr();
}

//从配置文本中读取连接字符串
private static string connStr = ReadXml.GetConnStr();
#endregion

#region 封装一个Sql 返回受影响的行数
/// <summary>
/// 封装一个Sql 返回受影响的行数
/// </summary>
/// <param name="sqlText">执行的sql脚本</param>
/// <param name="parameters">参数集合</param>
/// <returns>受影响的行</returns>
public static int XSTExecuteNonQuery(string sqlText,params MySqlParameter[] parameters)
{
//创建一个连接对象
using (MySqlConnection conn=new MySqlConnection(connStr))
{
//创建一个命令对象
using (MySqlCommand cmd=conn.CreateCommand())
{
conn.Open();//打开连接
cmd.CommandText = sqlText;//SQL命令
cmd.Parameters.AddRange(parameters);//把参数添加到cmd中
return cmd.ExecuteNonQuery();//返回受影响的行数
}//cmd
}//conn
}
#endregion

#region 执行Sql 返回查询的第一行第一列的值
/// <summary>
/// 执行Sql 返回查询的第一行第一列的值
/// </summary>
/// <param name="sqlText">执行的sql脚本</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回查询的第一行第一列的值</returns>
public static object XSTExcuteScalar(string sqlText, params MySqlParameter[] parameters)
{
//创建一个连接对象
using (MySqlConnection conn = new MySqlConnection(connStr))
{
//创建一个命令对象
using (MySqlCommand cmd = conn.CreateCommand())
{
conn.Open();//打开连接
cmd.CommandText = sqlText;//SQL命令
cmd.Parameters.AddRange(parameters);//把参数添加到cmd中
return cmd.ExecuteScalar();//返回查询的第一行第一列的值
}//cmd
}//conn
}
#endregion

#region 执行Sql 返回一个DataTable
/// <summary>
/// 执行Sql 返回一个DataTable
/// </summary>
/// <param name="sqlText">Sql脚本</param>
/// <param name="parameters">集合参数</param>
/// <returns></returns>
public static DataTable XSTEexcuteDataTable(string sqlText, params MySqlParameter[] parameters)
{
//将数据库中的数据填充到内存表中
using (MySqlDataAdapter adapter=new MySqlDataAdapter(sqlText, connStr))
{
//内存表
DataTable dt = new DataTable();
adapter.SelectCommand.Parameters.AddRange(parameters);
//填充内存表
adapter.Fill(dt);
return dt;
}//adapter
}
#endregion

#region 执行Sql 返回SQLDataReader
/// <summary>
/// 执行Sql 返回SQLDataReader
/// </summary>
/// <param name="sqlText">Sql脚本</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回SQLDataReader</returns>
public static MySqlDataReader XSTEexcuteReader(string sqlText, params MySqlParameter[] parameters)
{

//SqlDataReader要求,它读取数据的时候,它哟啊独占 它的SqlConnection对象,而且SqlConnection必须是Open状态。
MySqlConnection conn = new MySqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还要需要连接打开状态。
MySqlCommand cmd = conn.CreateCommand();
conn.Open();//打开连接
cmd.CommandText = sqlText;//执行sql语句
cmd.Parameters.AddRange(parameters);
//CommandBehavior.CloseConnection:代表,当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉。
return cmd.ExecuteReader(CommandBehavior.CloseConnection);

}
#endregion

这是我的连接数据库的方法

...全文
544 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jason_Mao1 2018-01-19
  • 打赏
  • 举报
回复
貌似你好像没指定端口号啊,你指定一下试试。mysql 应该是指定端口号的。希望能帮助到你。
秋的红果实 2018-01-19
  • 打赏
  • 举报
回复
代码太多,没时间看 定位到具体行
xuzuning 2018-01-19
  • 打赏
  • 举报
回复
连接字符串 读到了吗?检查一下
qq_40422507 2018-01-19
  • 打赏
  • 举报
回复
“System.TypeInitializationException”类型的未经处理的异常在 SerialPortTool.exe 中发生 其他信息: “SerialPortTool.MySqlHelper”的类型初始值设定项引发异常。 这个是错误的详细信息,百度上的思路主要在于缺少程序集的引用,可是我换了几个mysql.data.dll都没有用

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧