2017-11-28 4 views
0

'{ "SQLite 오류 \ r \ n"\ 값 " 오류"}'. 에 다음 코드 블록이 추가되었습니다.SQLite 명령으로 인해 SQLite 삽입 오류가 발생했습니다. { "SQLite 오류 r n 최근 "값 ": 구문 오류"}

using (SQLiteConnection connection = new SQLiteConnection()) 
    { 
     connection.ConnectionString = ConnectionString; 
     connection.Open(); 
     using (SQLiteCommand insertSQL = new SQLiteCommand(connection)) 
     { 
      insertSQL.CommandText = "INSERT INTO BetaValues(Name, Values) VALUES(@param1, @param2)"; 
      //insertSQL.CommandType = CommandType.Text; 
      insertSQL.Parameters.Add("@param1", DbType.String).Value = beta.Name.ToString(); 
      insertSQL.Parameters.Add("@param2", DbType.String).Value = beta.ValuesXML.ToString(); 
      insertSQL.ExecuteNonQuery(); 
     } 

내 테이블의 데이터 정의는 다음과 같습니다.

CREATE TABLE BetaValues (
    idBetaValues INTEGER  PRIMARY KEY, 
    Name   STRING (20) NOT NULL 
          UNIQUE, 
    [Values]  TEXT  UNIQUE 
); 

나는이 오류를 해결하기 위해 머리를 감싸려고 노력했지만 이전 오류가 발생하는 이유를 찾을 수 없습니다.

+1

'Values'는 SQL의 예약어입니다. CREATE 문에서와 같은 방법으로 INSERT 문에서 이름을 이스케이프해야합니다. –

답변

2

VALUES은 SQL 연산자이므로 열을 올바르게 식별하려면 구분 식별자를 사용해야합니다. SQLite에서는 열 이름 주위에 대괄호 [ColumnName]을 추가 할 수 있습니다. 참고로 other quotes possible도 있습니다. 이미 작성한 생성 쿼리에서 살펴보고 문제를 해결하기 위해

INSERT INTO BetaValues(Name, [Values]) VALUES(@param1, @param2) 

처럼 삽입 문을 수정합니다.