2015-01-12 3 views
1

사용자 지정 로그인 컨트롤을 사용하여 로컬 SQL Server 데이터베이스에 액세스하는 웹 양식을 만들었습니다. 데이터베이스에는 직원에 대한 다양한 정보가 포함 된 Employees이라는 테이블이 있지만 질문에 대한 관련 열은 EmployeeID (기본 키), UsernamePassword입니다.C#을 통해 SQL Server 데이터베이스에 쿼리하는 중 문제가 발생했습니다

EmployeeID을 검색하기 위해 로그인 컨트롤에 입력 된 사용자 이름과 암호를 사용하여 데이터베이스를 쿼리하려고합니다. ExecuteScalar()을 시도하면 예외가 throw됩니다. 예외는 '직원'이 잘못된 개체 이름이므로 내 문제가 연결 문자열로 의심됩니다. SQL Server 2014 Management Studio에서 데이터베이스의 속성을보고 연결 문자열을 검색했습니다.이 Studio에서는 데이터베이스도 만들었습니다. 또 다른 추측은 db에 연결할 때의 인증입니다. 나는 정말로 확실하지 않다. 그래서 누군가 제발 도와 줄 수 있냐?

string connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Joshua\\AppData\\Local\\Microsoft\\VisualStudio\\SSDT\\SignProDatabase\\SignProDatabase.mdf;Integrated Security=True;Connect Timeout=30"; 
string query = "select EmployeeID from Employees where Username = 'user' and Password = 'pass'"; 

SqlConnection connection = new SqlConnection(connectionString); 
connection.Open(); 

SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = new SqlCommand(query, connection); 

try 
{ 
    object test = cmd.ExecuteScalar(); 
    Console.WriteLine(test.ToString()); 
} 
catch(Exception err) 
{ 
    Console.WriteLine("Exception Message: " + err); 
    Console.ReadLine(); 
} 
+0

연결 문자열은 신뢰할 수있는 보안 용입니다. 즉, 로그인 한 사용자 계정이 아닌 웹 사이트에 제공된 보안 계정을 사용하여 연결 중임을 의미합니다. –

+0

cmd 란 무엇입니까? 나는 그것이 게시 된 코드에서 선언 된 것을 보지 못합니다. – Cosmin

+2

제발, 모두의 사랑을 위해 ......... SQL 쿼리를 매개 변수화. 이 기사에서 "지금까지 해보지 않은 것"(위의 내용)을 찾아보다 나은 방법을 찾아보십시오. http://www.csharp-station.com/Tutorial/AdoDotNet/lesson06 – granadaCoder

답변

0

주석에서 언급했듯이 응용 프로그램을 실행하는 계정은 서버와 데이터베이스에 액세스 할 수 있어야하며 Employees 테이블에 대한 선택 권한이 있어야합니다. 또한 제공된 코드가 보안상의 이유로 예를 들어있는 것이 아니라면 데이터베이스에 실제 암호를 저장해서는 안되며 SQL 주입 공격으로부터 보호하기 위해 입력의 유효성을 검사해야합니다.

관련 문제