2013-05-05 1 views
1

C 그것은 C#에서 처음 SQL 매개 변수화 업데이트 명령이고 난 내 업데이 트를 exectued 때 구문 오류가 있습니다.구문 오류 - #

string maRequete = "UPDATE " + strNomTable + " set " 
    + "evetype = @evetype ," 
    + "evedes = @evedes ," 
    + "evecli = @evecli ," 
    + "eveusermo = @eveusermo ," 
    + "eveinterv = @eveinterv where eveNum = " + '"' + strEvtNumeroString.ToString() + '"'; 

    OleDbCommand DbCommand = new OleDbCommand(maRequete); 

    DbCommand.Parameters.Add("@evetype", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@evedes", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@evecli", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@eveusermo", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@eveinterv", OleDbType.VarChar); 


    DbCommand.Parameters["@evetype"].Value = m_strEvtType.ToString().Trim(); 
    DbCommand.Parameters["@evedes"].Value = m_strDesignation.ToString().Trim(); 
    DbCommand.Parameters["@evecli"].Value = m_strCodeClient.ToString().Trim(); 
    DbCommand.Parameters["@eveusermo"].Value = m_strUserModification; 
    DbCommand.Parameters["@eveinterv"].Value = m_strCodeIntervenant.ToString().Trim(); 


    try 
    { 
     string strStringConnect = @"Provider=vfpoledb.1;Data Source=" + m_strDirectoryDBF + "\\" + strDbfFile + ".dbf;Collating Sequence=general"; 
     OleDbConnection DbConnection = new OleDbConnection(strStringConnect); 

     DbCommand.CommandType = System.Data.CommandType.Text; 

     DbConnection.Open(); 
     DbCommand.Connection = DbConnection; 

     DbCommand.ExecuteNonQuery(); 
     return "O"; 
    } 
    catch (Exception Ex) 
    { 
     return Ex.Message; 
    } 

누군가가 내 실수 인 생각을 가지고 : 여기

내 코드? 또한, 나는 오래된 DBF 파일 (비주얼 폭스 프로)에 쓰고 난 :(쿼리를 디버깅 할 수 있습니다.

고마워요 :)

안부를 위해 로그인 할 권한이없는 생각 당신의 UPDATE 문 대신 큰 따옴표 작은 따옴표를 사용하여

Nixeus

+0

오류 메시지가 정확히 무엇입니까? –

+0

"구문 오류." 내 대답을 확인 –

+0

, 명령 텍스트 –

답변

1

보십시오. 마지막 줄

+ "eveinterv = @eveinterv where eveNum = " + '"' + strEvtNumeroString.ToString() + '"'; 

+ "eveinterv = @eveinterv where eveNum = '" + strEvtNumeroString.ToString() + "'"; 
+0

이중 qoutes를 사용하는 나는 수정 같은 오류 만든 : 구문 오류 :( –

1

변화

string maRequete = "UPDATE " + strNomTable + " set " 
+ "evetype = @evetype ," 
+ "evedes = @evedes ," 
+ "evecli = @evecli ," 
+ "eveusermo = @eveusermo ," 
+ "eveinterv = @eveinterv where eveNum = '" + strEvtNumeroString.ToString() + "'"; 
+1

또는 더 나은, 변경에 대한 매개 변수를 사용하기를'필터가 너무 ... –

+0

내가 만든 where' 수정 같은 오류 : 구문 오류가 어떤 구문 오류 :( –

+0

는 –

0

같은 명령 텍스트는 maRequete을 인쇄하여 대화 형으로 그것을 실행하려고하면해야합니다, 당신은 SQL 구문은 발견 할 것이다 부정확하다. 문자열 상수를 나타 내기 위해 큰 따옴표를 사용하는 것 같습니다. SQL에서는 작은 따옴표를 사용해야합니다. 그것은 당신의 데이터가 작은 따옴표 (즉, 아포스트로피) 포함 가능합니다. 이 경우 예를 들어 추가하고 추가해야합니다.

INSERT ... values ('you''ll need two apostrophes for this'); 

이들은 단지 SQL 규칙입니다. 쿼리를 실행하려면 서버에 유효한 구문을 제공해야합니다.

관련 문제