我們有一個特定的數據庫,其中包含一些員工信息,並且我只寫了一個小類來訪問這些信息。該類包含一個應用程序配置文件,該文件具有到數據庫的連接字符串。這個項目只有3個文件。 兩個.cs
文件和一個App.config
文件。從其他項目引用dll,鍵入初始化程序異常
app.config文件中有這樣的:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="connString" value="server=myserver;uid=mysa;pwd=mypwd;database=mydb"/>
</appSettings>
</configuration>
我的一個CS文件,我有一個類,像這樣:
namespace Employees.DAL
{
public static class DAL
{
private static readonly string connString = System.Configuration.ConfigurationManager.AppSettings["connString"].ToString();
public static Employee GetEmployeeByID(long EmpID)
{
Employee e = null;
using (SqlConnection con = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand("EMPDLL_selEmployeeByID", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@LoginID", SqlDbType.BigInt).Value = EmpID;
con.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
if (reader.Read())
{ //todo: implement Employee class
e = new Employee((long)reader["LoginID"]
);
}
}
}
}
}
return e;
}
}
}
相當簡單只是從數據庫中抓取一個記錄,並作出了員工,這是Employee.cs類中的:
namespace Employees.Objects
{
public class Employee
{
/// <summary>
/// ID of employee.
/// </summary>
public long LoginID { get; private set; }
public Employee(long LoginID)
{
this.LoginID = LoginID;
}
}
}
現在我所做的是創建一個新的控制檯項目t在vs2010中,我添加了對我構建的這個.dll文件的引用,即Employees。我需要這樣做,因爲我必須將其編寫爲可重用類,以便其他人可以包含它。
於是我只是做了一些簡單的控制檯應用程序是這樣的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Employees.DAL;
using Employees.Objects;
namespace ConsoleEmployeesTest
{
class Program
{
static void Main(string[] args)
{
try
{
Employee e = DAL.GetEmployeeByID(68); //fails right here...
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.ReadLine();
}
}
}
我得到一個異常
System.TypeInitilizationException:爲Employees.DAL.DAL類型初始化拋出
異常 - > System.NullReferenceException:對象引用未設置爲對象的實例。
對象。
這是因爲新的應用程序沒有看到app.config文件?
其中是connString定義? – ChrisBint
@ChrisBint - 正如我所說它在app.config文件中。 – oJM86o
在'private static readonly string connString'處設置一個斷點我確信它無法讀取配置。 – Vivek