개발 공부/C# 학습

[C# 학습] DataTable 검색 기능(Select 이용) /DB 테이블 필드 이름 공백

아밍나 2022. 12. 13. 13:58
728x90

DataTable 검색

baseTable이라는 DataTable에 데이터가 있다고 가정하여 작성한 코드입니다.

원하는 필드에서 원하는 단어검색하는 DataTable을 return합니다.

private DataTable baseTable = new DataTable();

///////////////////////////////////////////////////////
//baseTable이라는 DataTable에 데이터가 있다고 가정합니다.
///////////////////////////////////////////////////////

private DataTable getTable(String item, String word)
{
    DataTable getTable = new DataTable();
    DataRow[] searchDataRow = baseTable.Select($"{item} = '{word}'");
    
    getTable = searchDataRow.CopyToDataTable();
    
    return getTable;
}

- 활용

검색 결과를 모아 놓은 getTable을 DataGridView의 DataSource로 설정하여 검색 결과를 출력하는 방법이 가장 대표적인 활용법이라 할 수 있습니다.

dataGridView.DataSource = getTable("이름", "aming");

- 순서

1. baseTable의 "이름"이라는 필드에서 "aming"이라는 dataRow를 Select 합니다.

2. CopyToDataTable를 이용하여 Select 한 DataRow 개체의 복사본getTable에 할당합니다.

3. getTable을 dataGridView DataSource로 설정합니다.

 


오류 해결)

 구문 오류: '명' 연산자 뒤에 피연산자가 없습니다.

 

DataRow[] searchDataRow = baseTable.Select($"{item} = '{word}'");

item 파라미터에서 받아온 baseTable의 필드가 word 파라미터 값과 동일하면 baseTable에서 해당 DataRow를 Select합니다.

 

그런데 여기서, 테이블의 필드 이름에 공백이 들어가 있으면 오류가 납니다.

예를 들어, 필드 이름을 "성 명"이라고 했다면, 다음과 같은 오류가 발생합니다.

 

 

필드 이름을 변경하지 않고 싶으면 구분자를 사용하면 됩니다. 

이때 주의할 점은, 사용하는 DB에 따라 구분자를 달리 사용해야 합니다.

- 필드 이름 공백(Spaces in Field Names)

Oracle MySQL MSSQL(SQL-Server)
"field name" `field name` [field name]

 

 

 

 

 

 

 

 


참고 사이트)

https://stackoverflow.com/questions/7984124/sql-query-syntax-error-spaces-in-field-names

 

SQL Query Syntax Error - Spaces in Field Names

The database my application uses has field names containing spaces. I believe this to be the cause of my problem. Here is a typical query: SELECT * FROM 'OV2 BAS' AS bas INNER JOIN 'OV2 RefID' ...

stackoverflow.com

 

728x90
반응형