简体   繁体   English

sqlite3 C ++中的主键错误

[英]Primary Key error in sqlite3 c++

My code when compiled and executed shows this: 我的代码在编译和执行时显示如下:

  1. Opened database successfully 成功打开数据库
  2. SQL error: near ";": syntax error SQL错误:“;”附近:语法错误
  #include <iostream>
  #include <fstream>
  #include <string>
  #include <vector>
  #include <stdlib.h>
  #include <cstring>
  #include <sstream>
  #include <sqlite3.h>
  #include <stdio.h>

using namespace std;

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
 int i;
 for(i=0; i<argc; i++){
  printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}

static void createTrackTable(){
 sqlite3 *db;
 char *zErrMsg = 0;
 int  rc;
 char *sql;

 rc = sqlite3_open("idk.db", &db);
 if( rc ){
  fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
  exit(0);
}else{
  fprintf(stdout, "Opened database successfully\n");
}

sql = "CREATE TABLE TRACK (" \
  "CD_ID INTEGER NOT NULL," \
  "TRACK_ID INTEGER NOT NULL," \
  "TITLE VARCHAR(70) NOT NULL," \
  "PRIMARY KEY(CD_ID, TRACK_ID);";

  rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
  if( rc != SQLITE_OK ){
   fprintf(stderr, "SQL error: %s\n", zErrMsg);
   sqlite3_free(zErrMsg);
 }else{
  fprintf(stdout, "Track table created successfully\n");
}
sqlite3_close(db);
}

int main(){
  createTrackTable();

  return 0;

}

I believe that the error is happening when I declare the PRIMARY KEY(CD_ID, TRACK_ID) 我相信当我声明PRIMARY KEY(CD_ID,TRACK_ID)时发生错误

Please any help would be greatly appreciated. 请任何帮助将不胜感激。 Thank you! 谢谢!

缺少查询中的最后一个)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM