百度一下,原来INEGER类型主键其内置有自动增长,只要其INSERT时参数设置为NULL即可。
并且尝试了一下UNIQUE,并不会自动增长。
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
#include "sqlite3.h"
#pragma comment(lib, "sqlitelib.lib")
#define CHECK_RC(rc,szInfo,szErrMsg,db) if(rc!=SQLITE_OK){\
printf("%s error!/n",szInfo);\
printf("%s/n",szErrMsg);\
sqlite3_free(szErrMsg);\
sqlite3_close(db);\
return 0;}
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;
}
int _tmain(int argc, _TCHAR* argv[])
{
sqlite3* db = NULL;
char *dbPath = "e:/test.db";
char *szErrMsg = 0;
int rc = sqlite3_open( dbPath, &db );
CHECK_RC(rc,"OpenDataBase",szErrMsg, db);
char *szSql1 = "DROP TABLE IF EXISTS UserInfo;";
rc = sqlite3_exec(db, szSql1, 0, 0, &szErrMsg);
CHECK_RC( rc, "Create Table",szErrMsg, db);
char *szSql = "CREATE TABLE IF NOT EXISTS UserInfo(ID INTEGER PRIMARY KEY,UserName CHAR, PassWord CHAR);";
rc = sqlite3_exec(db, szSql, 0, 0, &szErrMsg);
CHECK_RC( rc, "Create Table",szErrMsg, db);
// 插入
rc = sqlite3_exec( db, "INSERT INTO UserInfo VALUES(NULL,'name1','password1');", 0,0, &szErrMsg);
CHECK_RC( rc, "Insert Data", szErrMsg, db );
rc = sqlite3_exec( db, "INSERT INTO UserInfo VALUES(NULL,'name2','password2');", 0,0, &szErrMsg);
CHECK_RC( rc, "Insert Data", szErrMsg, db );
// 查询
szSql = "SELECT * FROM UserInfo";
rc = sqlite3_exec( db, szSql, callback,0, &szErrMsg);
sqlite3_close( db );
system("pause");
return 0;
}
Mysql与Sqlite重置AUTO_INCREMENT
对于Auto_Increment
Mysql重置Auto_Increment初始值的方法很简单:
要设定设置的话就是修改表记录
顺便提一下,Mysql和Sqlite记录auto_increment的方式有点点不一样,Mysql存的是将要新增记录的自増值,而sqlite存的是最后一条新增记录的自增值,所以Mysql的Auto_Increment是1,而SQLITE是0。但自増都是从1开始。
Mysql重置Auto_Increment初始值的方法很简单:
alter table your_table_name AUTO_INCREMENT;
而Sqlite不在存在表里的,所以复杂一点,但也很简单
它主要存在库里的自动表sqlite_sequence
所以复位/重置只要删除相应记录就好!
方法1:
delete from sqlite_sequence where name = 'your_table_name';
要设定设置的话就是修改表记录
update sqlite_sequence set seq = [起始记录值] where name = 'your_table_name' ;
http://stackoverflow.com/questions/508627/auto-increment-in-sqlite-problem-with-python