Swift 프로그램에서 SQLite 테이블의 열을 업데이트하는 방법은 무엇입니까?

아로 늄 112

첫 번째 바인딩에서 런타임에 충돌하는 코드는 다음과 같습니다.

func update(time: Date) throws {
    let sql = "UPDATE Entrys SET date = ? WHERE id = ?"  //Questionable
    guard let update = try db.prepareStatement(sql: sql) else { throw SQLiteError.prepare }
    sqlite3_finalize(update)

    let iso8601Time = ISO8601Time(date: time)
    guard sqlite3_bind_text(update, 1, iso8601Time.concise(), -1, SQLITE_TRANSIENT) == SQLITE_OK else { throw SQLiteError.bind }  //Throws error here

    guard sqlite3_bind_int(update, 2, Int32(id)) == SQLITE_OK else { throw SQLiteError.bind }

    guard sqlite3_step(update) == SQLITE_ROW else { throw SQLiteError.step }
}

ISO8601Time은 Text와 Swift 사이에서 변환하는 객체입니다 .Date는 내가 삽입하는 다른 코드에서 작동합니다.

문서가 나를 돕지 않습니다.

내 SQL 구문이 잘못되었을 수 있습니다. 온라인에서 신뢰할 수있는 예를 찾지 못했습니다.

조언하십시오.

=)

편집 1 :

터미널의 sqlite 편집기에서 다음 코드가 작동 함을 확인했습니다. 위의 형식과 비슷합니다.

Update Entrys SET date = "test" WHERE id = 1;

또한 sqlite3_bind_text 및 sqlite3_bind_int가 단위 테스트 및 통과 된 다른 함수에서 작동 함을 확인했습니다. 이 구문을 UPDATE로 전송하는 방법을 잘 모르겠으며 문서에는 지금까지 찾은 내용이 없습니다.

편집 2 :

다음은 작동하고 여러 매개 변수가 있고 문제 해결에 도움이 될 수있는 삽입에 대한 SQLite 구문을 보여줍니다.

func add(date: Date, confirmed: Bool, scale: Int, measurement: SQLMeasurement) throws -> SQLEntry {
    let sql = "INSERT INTO Entrys (date, confirmed, scale, measurementID) VALUES (?,?,?,?);"
    guard let insert = try? db.prepareStatement(sql: sql) else { fatalError() }
    defer { sqlite3_finalize(insert) }

    let iso8601Time = ISO8601Time(date: date)
    guard sqlite3_bind_text(insert, 1, iso8601Time.concise(), -1, SQLITE_TRANSIENT) == SQLITE_OK else { throw SQLiteError.bind }

    var bool: Int    //FIXME: Vars are trouble
    if confirmed { bool = 1 }
    else { bool = 0 }
    guard sqlite3_bind_int(insert, 2, Int32(bool)) == SQLITE_OK else { throw SQLiteError.bind }

    guard sqlite3_bind_int(insert, 3, Int32(scale)) == SQLITE_OK else { throw SQLiteError.bind }
    guard sqlite3_bind_int(insert, 4, Int32(measurement.id)) == SQLITE_OK else { throw SQLiteError.bind }

    guard sqlite3_step(insert) == SQLITE_DONE else { throw SQLiteError.step }
    let lastId = db.lastId()
    return SQLEntry(id: lastId, db: db)
}
스테판 배드

올바른 순서는 다음과 같습니다.

  • 준비된 성명서 작성
  • 매개 변수에 값 바인딩
  • SQL 실행
  • 리소스 누수를 방지하기 위해 객체를 삭제합니다 (사용 sqlite3_finalize(stmt)).

준비된 명령문을 작성하고 즉시 삭제하지만 여전히 액세스하여 충돌이 발생합니다.

선적 서류 비치:

sqlite3_finalize () 함수는 준비된 문을 삭제하기 위해 호출됩니다.

참조 https://www.sqlite.org/c3ref/finalize.html를

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQLite : 데이터베이스의 모든 테이블에 열을 추가하는 방법은 무엇입니까?

분류에서Dev

동일한 테이블의 다른 열로 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

BigRQuery Google Big Query에서 테이블의 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Swift에서 현재 날짜로 레이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

테이블의 열 값을 효율적으로 업데이트하는 방법은 무엇입니까?

분류에서Dev

다른 테이블의 다른 값으로 mysql 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

PRAGMA (.net / c #)를 통해 sqlite의 테이블에서 열 이름을 얻는 방법은 무엇입니까?

분류에서Dev

프로그램을 중지하지 않고 편집중인 CSV에서 파이썬 프로그램을 업데이트하는 방법은 무엇입니까?

분류에서Dev

SQLite로 Qt에서 테이블을 만드는 방법은 무엇입니까?

분류에서Dev

두 번째 테이블의 값을 기반으로 한 테이블의 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

양식이 열리기 전에 임시 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

select 문의 값으로 임시 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

QT로 SQLite DB의 모든 테이블을 덤프하는 방법은 무엇입니까?

분류에서Dev

Sqlite Flutter에서 데이터베이스의 모든 테이블을 나열하는 방법은 무엇입니까?

분류에서Dev

SQLite에서 특정 행을 업데이트하는 방법은 무엇입니까?

분류에서Dev

부모 테이블을 기반으로 자식 테이블의 열 값을 자동 업데이트하는 방법은 무엇입니까?

분류에서Dev

Java를 사용하여 모든 행의 열을 배열의 값으로 업데이트하는 가장 좋은 방법은 무엇입니까? (SQLite)

분류에서Dev

한 테이블을 다른 테이블에서 업데이트하는 방법은 무엇입니까?

분류에서Dev

특정 분 간격으로 SQL 테이블 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Observable의 업데이트 프로그램을 식별하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

SQLite 데이터베이스에서 모든 테이블을 읽고 R에 데이터 세트 / 변수로 저장하는 방법은 무엇입니까?

분류에서Dev

ttk.Treeview가 데이터를로드하는 sqlite 데이터베이스 테이블의 이름을 식별하는 방법은 무엇입니까?

분류에서Dev

열이 변경된 후 테이블에 행을 추가하는 방법은 무엇입니까? (SQLite, JAVA)

분류에서Dev

SQLite3 : 테이블에서 열을 다시 정렬하는 방법은 무엇입니까?

분류에서Dev

MySQL에서 다른 열에 따라 테이블의 열을 자동으로 업데이트하는 방법은 무엇입니까?

분류에서Dev

데이터 클래스 IBM에서 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Rails에서 json 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Rails에서 json 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Pandas에서 DataFrame 열을 업데이트하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    SQLite : 데이터베이스의 모든 테이블에 열을 추가하는 방법은 무엇입니까?

  2. 2

    동일한 테이블의 다른 열로 열을 업데이트하는 방법은 무엇입니까?

  3. 3

    BigRQuery Google Big Query에서 테이블의 열을 업데이트하는 방법은 무엇입니까?

  4. 4

    Swift에서 현재 날짜로 레이블을 업데이트하는 방법은 무엇입니까?

  5. 5

    테이블의 열 값을 효율적으로 업데이트하는 방법은 무엇입니까?

  6. 6

    다른 테이블의 다른 값으로 mysql 열을 업데이트하는 방법은 무엇입니까?

  7. 7

    PRAGMA (.net / c #)를 통해 sqlite의 테이블에서 열 이름을 얻는 방법은 무엇입니까?

  8. 8

    프로그램을 중지하지 않고 편집중인 CSV에서 파이썬 프로그램을 업데이트하는 방법은 무엇입니까?

  9. 9

    SQLite로 Qt에서 테이블을 만드는 방법은 무엇입니까?

  10. 10

    두 번째 테이블의 값을 기반으로 한 테이블의 열을 업데이트하는 방법은 무엇입니까?

  11. 11

    양식이 열리기 전에 임시 테이블을 업데이트하는 방법은 무엇입니까?

  12. 12

    select 문의 값으로 임시 테이블을 업데이트하는 방법은 무엇입니까?

  13. 13

    QT로 SQLite DB의 모든 테이블을 덤프하는 방법은 무엇입니까?

  14. 14

    Sqlite Flutter에서 데이터베이스의 모든 테이블을 나열하는 방법은 무엇입니까?

  15. 15

    SQLite에서 특정 행을 업데이트하는 방법은 무엇입니까?

  16. 16

    부모 테이블을 기반으로 자식 테이블의 열 값을 자동 업데이트하는 방법은 무엇입니까?

  17. 17

    Java를 사용하여 모든 행의 열을 배열의 값으로 업데이트하는 가장 좋은 방법은 무엇입니까? (SQLite)

  18. 18

    한 테이블을 다른 테이블에서 업데이트하는 방법은 무엇입니까?

  19. 19

    특정 분 간격으로 SQL 테이블 열을 업데이트하는 방법은 무엇입니까?

  20. 20

    Observable의 업데이트 프로그램을 식별하는 가장 좋은 방법은 무엇입니까?

  21. 21

    SQLite 데이터베이스에서 모든 테이블을 읽고 R에 데이터 세트 / 변수로 저장하는 방법은 무엇입니까?

  22. 22

    ttk.Treeview가 데이터를로드하는 sqlite 데이터베이스 테이블의 이름을 식별하는 방법은 무엇입니까?

  23. 23

    열이 변경된 후 테이블에 행을 추가하는 방법은 무엇입니까? (SQLite, JAVA)

  24. 24

    SQLite3 : 테이블에서 열을 다시 정렬하는 방법은 무엇입니까?

  25. 25

    MySQL에서 다른 열에 따라 테이블의 열을 자동으로 업데이트하는 방법은 무엇입니까?

  26. 26

    데이터 클래스 IBM에서 테이블을 업데이트하는 방법은 무엇입니까?

  27. 27

    Rails에서 json 열을 업데이트하는 방법은 무엇입니까?

  28. 28

    Rails에서 json 열을 업데이트하는 방법은 무엇입니까?

  29. 29

    Pandas에서 DataFrame 열을 업데이트하는 방법은 무엇입니까?

뜨겁다태그

보관