我这个是自己写的windows程序,只要一与数据库大交道就抱这错:
************** 异常文本 **************
System.TypeInitializationException: “ComputerManage.OleDbDAL.DbHelperOleDb”的类型初始值设定项引发异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
在 ComputerManage.OleDbDAL.DbHelperOleDb..cctor() 位置 E:\ComputerManage\ComputerManage\OleDbDAL\DbHelperOleDb.cs:行号 15
--- 内部异常堆栈跟踪的结尾 ---
在 ComputerManage.OleDbDAL.DbHelperOleDb.GetSingle(String SQLString, OleDbParameter[] cmdParms)
在 ComputerManage.OleDbDAL.UserDAL.Exists(String uName) 位置 E:\ComputerManage\ComputerManage\OleDbDAL\UserDAL.cs:行号 52
在 ComputerManage.BLL.UserBLL.Exists(String uName) 位置 E:\ComputerManage\ComputerManage\BLL\UserBLL.cs:行号 41
在 FormUI.frmLogin.btnOK_Click(Object sender, EventArgs e) 位置 E:\ComputerManage\ComputerManage\FormUI\frmLogin.cs:行号 41
在 System.Windows.Forms.Control.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnClick(EventArgs e)
在 System.Windows.Forms.Button.PerformClick()
在 System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)
在 System.Windows.Forms.TextBoxBase.ProcessDialogKey(Keys keyData)
在 System.Windows.Forms.Control.PreProcessMessage(Message& msg)
在 System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
在 System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
操作数据方法:
public static int Exists(string uName)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select uID from tbUser");
strSql.Append(" where uName= @uName");
OleDbParameter[] parameters = {
new OleDbParameter("@uName", OleDbType.VarChar,50)
};
parameters[0].Value = uName;
object obj = DbHelperOleDb.GetSingle(strSql.ToString(), parameters); //经调试,发现错误出现在此
if (obj != null)
{
return int.Parse(obj.ToString());
}
else
{
return 0;
}
}
DbHelperOleDb.GetSingle方法:
public static object GetSingle(string SQLString, params OleDbParameter[] cmdParms)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
}
}
}