2012-05-31 4 views
1

현재 C# 및 SQL에 관한 프로젝트를 진행하고 있으며 SELECT 함수에 관한 문제가 있으며 온라인에서 솔루션을 찾을 수 없습니다.C# 및 SQL SELECT

시나리오는 SQL 서버를 통해 C 번호에서 쿼리를 검색하는 점입니다 및 C#에서 데이터 그리드보기에 결과를 표시합니다.

난 그냥 비주얼 스튜디오에서 빠른 Windows 폼을했고, 단지 DataGridView를, 2 개 텍스트 상자 및 검색 버튼을했던 프로젝트를 시작하기 전에 비주얼 스튜디오 2008 및 SQL Server 스튜디오 2008

을 사용하고 있습니다. SQL 서버에서

나는 테이블 DVD와 데이터베이스를 가지고 있고 나는 DVD ID와 이름이 Windows 폼에서, 검색하려는.

나는 DVD ID로 시작하고이 코드를 구현 :

private void btnView_Click(object sender, EventArgs e) 
{ 
    SqlConnection c = new SqlConnection(@"Data Source=GILBERTB-PC\SQLEXPRESS;Initial Catalog=DVDandGameBooking;Integrated Security=True"); 

    DataTable t = new DataTable(); 

    string sqlString = "SELECT * From DVD where Id ='" + txtID.Text+ "'"; 

    SqlDataAdapter dt = new SqlDataAdapter(sqlString, c);   
    dt.Fill(t); 

    dtgv1.DataSource = t; 
} 

을 그리고 그 다음

: 근무 내가 함께 검색 할 수

string sqlString = "SELECT * From DVD where Name ='" + txtName.Text+ "'"; 

그래서

에 코드를 변경 하지만 프로그램을 시작했을 때의 이름은 빈 데이터베이스를 보인 이름으로 검색했습니다

또한 코드를 변경하여 ID로 검색하거나 이름으로 검색 할 수있는 방법이 있습니까? 여러분의 도움과 시간

+0

반환 된 내용을 보려면 동일한 스크립트를 SQL에서 실행 해 보셨습니까? –

+7

바비 테이블이 당신을 소유하게됩니다. –

+1

나는 바비 테이블을 좋아한다! –

답변

2

생각에 대한

감사 :

  1. 이 있는지 확인 txtName.Text이 값
  2. 시도의 SQL 엔터프라이즈 관리자, 두꺼비, 또는 다른 쿼리 도구를 사용하여 선택이있다. 너는 무엇을 얻 느냐?
  3. 아래 예처럼 LIKE를 사용해보세요
  4. 최악의 경우 어쩌면 '대소 문자 구분'텍스트 일치로 설정된 테이블의 데이터 정렬을 확인할 수 있습니다.

것은 모두 ID와 이름 :

SELECT * FROM DVD 
     WHERE Id=[ID Value] 
     OR Name LIKE '%[Name Value]%' 
2

또는이 같은 매개 변수와 함께하는 SqlCommand를 사용할 수 있습니다 : 당신이 정말 SqlDataAdapter를 사용하려는 경우

SqlConnection c = new SqlConnection(@"Data Source=GILBERTB-PC\SQLEXPRESS;Initial Catalog=DVDandGameBooking;Integrated Security=True"); 
string queryString = "SELECT * From DVD where Id = @id"; 
var paramId = new SqlParameter("id", SqlDbType.VarChar); 
var query = new SqlCommand(queryString, c); 
query.Parameters.Add(paramId); 

, 당신은 선택 명령을 설정할 수 있습니다 위에 썼던 사람에게. 그렇지 않으면 dataReader를 사용하여 결과를 반복 할 수 있습니다.

또한,이 읽기 쿼리에 쉽게 및 SQL 주입하는 것이 안전합니다 같은 매개 변수를 사용하여. 항상 고려해야합니다.

EDIT1 : 당신은 ID 또는 이름 중 하나와 함께 검색 할 경우, 당신은 단지 2 개 매개 변수를 확인하고 둘 사이의 OR을두고, 어쩌면 쿼리에서 키워드 like 대신 =를 사용할 수 있습니다.값이 null 일 수있는 경우 null이 아닌 값에 따라 동적으로 쿼리를 작성해야 할 수 있습니다.

+0

* * 할 수 있습니다 ** - ** **! ** +1 –