TypeInitializationException,类的初始值设定发生异常
我定义了一个类
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Data.SqlClient;
/// <summary>
/// DB 的摘要说明
/// </summary>
namespace DAL
{
public class OleDbDB
{
#region Fields
private static readonly string connectionstring = GetConnectionString();
private static SqlConnection conn = new SqlConnection(connectionstring);
#endregion
#region Properties
#endregion
#region Constructed Function
public OleDbDB()
{
}
#endregion
#region Methods
private static string GetConnectionString()
{
return ConfigurationManager.AppSettings["ConnetionString"].ToString();
}
private static bool OpenConnection()
{
if (conn.State != ConnectionState.Open)
{
try
{
conn.Open();
}
catch
{
conn.Close();
return false;
}
}
return true;
}
public static SqlDataReader ReturnOleDbDataReader(string sql)
{
if (OpenConnection())
{
//conn已经打开
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr;
try
{
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{
conn.Close();
return null;
}
//DataReader的数据读完之前不能关闭conn
return dr;
}
else
{
conn.Close();
return null;
}
}
public static DataSet ReturnDataSet(string sql)
{
if (OpenConnection())
{
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
}
catch
{
conn.Close();
return null;
}
conn.Close();
return ds;
}
else
{
conn.Close();
return null;
}
}
public static DataTable ReturnDataTable(string sql, int TableIndex)
{
DataSet ds = ReturnDataSet(sql);
if (ds != null)
{
return ds.Tables[TableIndex];
}
else
{
return null;
}
}
public static DataTable ReturnDataTable(string sql)
{
return ReturnDataTable(sql, 0);
}
public static DataRow ReturnDataRow(string sql, int TableIndex, int RowIndex)
{
DataTable dt = ReturnDataTable(sql, TableIndex);
if (dt != null)
{
return dt.Rows[RowIndex];
}
else
{
return null;
}
}
public static DataRow ReturnDataRow(string sql, int TableIndex)
{
return ReturnDataRow(sql, TableIndex, 0);
}
public static DataRow ReturnDataRow(string sql)
{
return ReturnDataRow(sql, 0, 0);
}
/// <summary>
/// 唯一一个返回值为false 代表出错的方法
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static bool ExecuteNonQuery(string sql)
{
if (OpenConnection())
{
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
cmd.ExecuteNonQuery();
}
catch
{
conn.Close();
return false;
}
return true;
}
else
{
conn.Close();
return false;
}
}
// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行
public static object ExecuteScalar(string sql)
{
if (OpenConnection())
{
SqlCommand cmd = new SqlCommand(sql, conn);
object ob;
try
{
ob = cmd.ExecuteScalar();
}
catch
{
conn.Close();
return null;
}
return ob;
}
else
{
conn.Close();
return null;
}
}
public static bool BindGridView(GridView gv, string sql)
{
return BindGridView(gv, sql, 0);
}
public static bool BindGridView(GridView gv, string sql, int tableIndex)
{
DataTable dt = ReturnDataTable(sql, tableIndex);
if (dt != null)
{
gv.DataSource = dt.DefaultView;
gv.DataBind();
return true;
}
else
{
return false;
}
}
#endregion
}
}
然后如下调用
string sql = "select [AdminId] from [tb_Admin] where [AdminName]='" + this.adminName + "'";
return Convert.ToInt32(OleDbDB.ExecuteScalar(sql));
提示TypeInitializationException,类的初始值设定发生异常,是哪里不对吗?
------解决方案--------------------
string sql = "select [AdminId] from [tb_Admin] where [AdminName]='" + this.adminName + "'";
Debug到这个到查询分析器看看是不是有问题·
[解决办法]