2014-04-04 2 views
0

텍스트 상자를 참조로 사용하여 select 쿼리를 만들 수 있습니까?어떻게하면 텍스트 상자를 사용하여 테이블 이름을 얻을 수 있습니까

일부 같은 :

SELECT modeltype FROM txt_model.text 

텍스트 상자의 값 디스플레이는 테이블의 이름입니다.

+5

예이 가능하다. 아직 아무 것도 시도하지 않았습니까? –

+0

문자열 연결로이 작업을 수행 할 수 있습니다. 'var sql = ""+ txt_model.Text'에서 modeltype을 선택하십시오. 그러나 SQL 주입에주의하십시오. – paqogomez

+0

@paqogomez가 좋은 지적입니다. 이런 식으로 SQL injection을 막을 수 있는지 확실하지 않습니다. –

답변

1

설명 된대로 수행 할 수 있지만 좋지 않은 아이디어입니다. 다음과 같은 코드를 제안합니다. 안전하고 동일한 UI를 가지고 있습니다.

      // add your table names to the list below 
List<string> validTables = New List<string>() {"users", "addr", "events" }; 

if (validTables.IndexOf(txt_model.text.ToLower()) > 0) 
{ 
    // use "SELECT modeltype FROM "+txt_model.text to perform work 
} 
else 
{ 
    // error code 
} 

유효성있는 테이블의 동적 목록을 원할 수도 있습니다. 이 경우 결과를 가져올 수 있습니다 (예 : SQL Server 사용).

SELELCT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 

그리고 validTables 목록에 넣으십시오.

또는 그 결과를 드롭 다운에 넣을 수 있습니다. 쿼리 문자열을 구축 할 수

+0

'quotename (txt_model.Text)'또한 모델명에 대괄호가 없는지 확인하십시오. – mellamokb

0

한 가지 방법 :

string sql = string.Format("Select modeltype From {0}", txt_model.Text); 
// ... 
SqlCommand cmd = new SqlCommand(sql); 
관련 문제