2013-07-30 1 views
1

그래서 C#에서 빈 DataTable을 채우려 고합니다. Sql을 돕는 다양한 클래스를 사용하고 있습니다. "열 이름 A가 잘못되었습니다"라는 오류가 발생했습니다. DataTable이 비어있어서 채우기를 시도하고 해당 열에서 아무 것도 추출하지 않기 때문에이 사실이 저에게 의미가 없습니다. .빈 DataTable을 채우면 SQL 예외 "잘못된 열 이름"이 표시됩니다.

아래 (SQL 데이터베이스에서 가져온) 첫 번째 데이터 조각에는 cmd2와 같이 SKUStockCode 셀에 'A'가 포함되어 있습니다. DataTable은 아래 containsAllRelatedProductData라고합니다. 그러나 나는이 'A'를 내 새 DataTable의 열로 쓰려고하지 않고 SQL 데이터베이스에서 데이터를 가져 오려고하는 행의 SKUStockCode이기 때문에 'A'만을 참조합니다. 오류가 잘못된 열 이름이 왜 (내가 알고있는 것을이되지 않는) DataTable에 새로운 열을 만드는 몇 가지 명명 제한이없는 한

foreach(char ch in containsRelatedProductsStringOnly.Rows[0]["SKURelatedProducts"].ToString()) 
    { 
     if(ch != ' ') 
     { 
      stockCode = stockCode + ch; 
     } 
     else 
     { 
      SqlCommand cmd2 = new SqlCommand("SELECT SKUName FROM COM_SKU WHERE SKUStockCode = " + stockCode, con); 
      SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2); 
      adapter2.Fill(containsAllRelatedProductData); //Error 
      stockCode = ""; 
     } 
    } 

나는, 이해가 안 돼요. 이 오류는 빈 DataTable (containsAllRelatedProductData)을 채우는 데있어 발생하며, 아무것도 추출하지 않습니다. 누구든지 잘못된 열 이름 오류가 발생하는 이유를 알고 있습니까?

+0

datatable 열 이름과 쿼리 열 이름을 동일하게 설정하십시오! –

답변

3

당신의 명령은 다음과 같습니다

SELECT SKUName FROM COM_SKU WHERE SKUStockCode = CODE0001 

그러나 것과 같아야합니다 :

SELECT SKUName FROM COM_SKU WHERE SKUStockCode = 'CODE0001' 

그래서 당신이 당신의 입력 문자열을 캡슐화해야 '

foreach(char ch in containsRelatedProductsStringOnly.Rows[0]["SKURelatedProducts"].ToString()) 
{ 
    if(ch != ' ') 
    { 
     stockCode = stockCode + ch; 
    } 
    else 
    { 
     SqlCommand cmd2 = new SqlCommand("SELECT SKUName FROM COM_SKU WHERE SKUStockCode = '" + stockCode+"'", con); 
     SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2); 
     adapter2.Fill(containsAllRelatedProductData); //Error 
     stockCode = ""; 
    } 
} 
+0

그래서 작동하는 것처럼 보였습니다 ... 나는 왜이 프로그램에 대해 최소한 2 시간을 보냈는지, 이것이 매우 간단하다는 이유를 조사해야 할 것입니다. 이것은 매우 간단하고 구문 때문에 분명했습니다. – DNAInstant

1

아래 다음을 시도하십시오.

new SqlCommand("SELECT SKUName FROM COM_SKU WHERE SKUStockCode = '" + stockCode + "'", con); 
+0

감사합니다. 이것은 호기심에 대한 올바른 답변입니다. – DNAInstant

관련 문제