2014-06-14 2 views
0

나는 succesufuly 설정을 DB는 수 (.mdb) OleDb.I가DB 연결 어댑터 "데이터 형식이 일치하지"

발생하고 사용하여 내 대한 액세스에 연결이 "조건 식에서 데이터 형식이 일치합니다."

SQL 명령에서 "where"문을 사용하면 오류가 발생합니다. 제거하면 succesufuly 모든 설명을 얻습니다.

아이디어가 있으십니까?

내 데이터베이스가이 같은 같습니다

ID (short text)  Comment (long text) 
431     They_study_math 
321     They_study_biology 

을 내 코드는 다음과 같습니다 : 당신이 그것을 사용해야하는 이유

나는 당신의 ID 열 같은 느낌
public void auth_group(string group) 
    { 
     connDB.Open(); 
     DataSet ds = new DataSet(); 
     OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT Comment FROM groups WHERE ID=431", connDB); 
     adapter.Fill(ds); 
     connDB.Close(); 

     DataTable dt = ds.Tables[0]; 
     foreach (DataRow dr in dt.Rows) 
     { 
      listBox1.Items.Add(dr["Comment"].ToString()); 
     } 
    } 

답변

1

은 문자 유형, 즉이다 작은 따옴표는 다음과 같습니다.

WHERE ID = '431' 

내가 이런 말을 가지고 당신의 ID 컬럼에 대한 올바른 유형과 같은 정수 문자가 아닙니다.

또한 using statement을 사용하여 데이터베이스 연결을 삭제하고 OleDbDataAdapter을 사용하십시오.

+0

OMG 내가 지금 그렇게 바보가 된 기분 ... 그리고 나는 데이터베이스 클래스를했다.> – user3605321

+0

내가 사용하는 '+ 그룹 + ""하지만 난 얻을 "구문 오류"grupe ID = FROM Notificari 선택 "'을 시도 쿼리 식 'ID ='431 '에서 올바른 문자열이어야합니다 ... – user3605321

+0

@ user3605321 이것은 완전히 다른 질문입니다! –

0

귀하의 id 필드는 문자열입니다. 다음과 같이 작성해야합니다.

공개 무효 auth_group (문자열 그룹) { connDB.Open(); DataSet ds = new DataSet(); OleDbDataAdapter 어댑터 = 새 OleDbDataAdapter ("SELECT 코멘트 WHERE ID = '431'", connDB) 어댑터. 채우기 (ds); connDB.Close(); >

DataTable dt = ds.Tables[0]; 
    foreach (DataRow dr in dt.Rows) 
    { 
     listBox1.Items.Add(dr["Comment"].ToString()); 
    } 
} 
관련 문제