직원 정보가있는 특정 데이터베이스가 있으며이 정보 중 일부에 액세스하기 위해 작은 클래스를 작성했습니다. 이 클래스에는 데이터베이스에 대한 연결 문자열이있는 응용 프로그램 구성 파일이 포함되어 있습니다. 이 프로젝트에는 3 개의 파일 만 있습니다. 두 개의 .cs
파일과 두 개의 App.config
파일이 있습니다.다른 프로젝트에서 dll을 참조하는 경우 이니셜 라이저 예외가 발생합니다.
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;
}
}
}
은 매우 간단 그냥 DB에서 레코드를 잡고하고한다 :
내 CS 파일의<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="connString" value="server=myserver;uid=mysa;pwd=mypwd;database=mydb"/>
</appSettings>
</configuration>
한 나는 수업과 같이 있습니다
app.config 파일이 있습니다 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;
}
}
}
이제는 새로운 콘솔 projec을 만들었습니다. t를 vs2010에서 만들고 필자는 Employee라는이 .dll 파일에 대한 참조를 추가합니다. 다른 사람들이 그것을 포함 할 수 있도록 재사용 가능한 클래스로 써야하기 때문에이 작업을 수행해야합니다. Employees.DAL.DAL의 형식 이니셜이
을 던졌다 : 나는
가 System.TypeInitilizationException 예외를 얻을
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.NullReferenceException : 개체 참조가
개체의 인스턴스로 설정되지 않았습니다.
새 앱에 app.config 파일이 표시되지 않기 때문에이 작업이 수행됩니까?
여기서 connString은 정의되어 있습니까? – ChrisBint
@ChrisBint - app.config 파일 안에 있다고 말했듯이. – oJM86o
'private static readonly string connString'에서 중단 점을 설정합니다. 구성을 읽지 못했습니다. – Vivek