SQlite如何重新排列主键

SQlite如何重新排列主键,第1张

额,我觉得数据库的主键没有必要去重新排列,sqlite这样的小数据库还好,像oracle这样的大型数据库,如果记录上百万、千万,你每更新一条记录的时候还想着去重新排列主键的话,数据库性能势必会因此受到影响,甚至很大影响。那么,你在实际过程中使用数据库记录的时候,应当在界面的显示list中定义一个id自增变量,每次从数据库中提取出来的数据记录的那个id不用,用你自定义的这个自增id,这样显示的时候,可以做到记录与记录之间是连续的,即使你数据库中的记录不是连续的。而你如果实在要用数据库id作为在界面上的记录自增id的话,每更新一次把id重置一遍咯,呵呵,正如楼上所说的,ET id= id+1 WHERE id > 33,但是个人觉得没必要

SQLite怎么创建Boolean数据类型
在eclipse中需要自定义创建表工具类:比如;1、写一个DBHelper继承自SQLiteOpenHelperpublicclassDBHelperextendsSQLiteOpenHelper{//数据库的版本privatefinalstaticintDB_VERSION=1;//数据库名privatefinalstaticStringDB_NAME="ladengdb";privateContextmContext;//我们直接用super调用父类的构造方法,这样我们在实例化DBHelper的时候只需要传入一个上下文参数就可以了publicDBHelper(Contextcontext){super(context,DB_NAME,null,DB_VERSION);thismContext=context;}//数据库不存在的时候,调用这个方法@OverridepublicvoidonCreate(SQLiteDatabasedb){createTables(db,0,0);}//版本号发生变化的时候,调用这个方法@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){//1删除原来的表//2调用onCreate重新创建数据库}/建表语句,只需要一行就能建一个表/privatevoidcreateTables(SQLiteDatabasedb,intoldVersion,intnewVersion){//createTable(Movieclass)返回的是sql建表语句//dbexecSQL(sql)执行这条建表语句dbexecSQL(createTable(Movieclass));}/如果没传表明的话,默认使用类名作为表明@paramclazz实体类@return/privateStringcreateTable(Classclazz){returncreateTable(clazz,clazzgetSimpleName());}/真正的建表方法@paramclazz实体类@paramtableName表明@returnsql建表语句/privateStringcreateTable(Classclazz,StringtableName){//实例化一个容器,用来拼接sql语句StringBuffersBuffer=newStringBuffer();//sql语句,第一个字段为_ID主键自增,这是通用的,所以直接写死sBufferappend("createtableifnotexists"+tableName+""+"(_IDINTEGERPRIMARYKEYAUTOINCREMENTNOTNULL,");//得到实体类中所有的公有属性Field[]fields=clazzgetFields();//遍历所有的公有属性for(Fieldfield:fields){//如果属性不为_id的话,说明是新的字段if(!fieldgetName()equals("_id")){//得到属性的基本数据类型Stringtype=fieldgetType()getSimpleName();//如果是String类型的属性,就把字段类型设置为TEXTif(typeequals("String")){sBufferappend(fieldgetName()+"TEXT,");//如果是int类型的属性,就把字段类型设置为INTEGER}elseif(typeequals("int")){sBufferappend(fieldgetName()+"INTEGER,");}}}//将最后的逗号删除sBufferdeleteCharAt(sBufferlength()-1);//替换成);表明sql语句结束sBufferappend(");");//返回这条sql语句returnsBuffertoString();}}2、Movie实体类,实体类中的属性就是表中的字段publicclassMovie{publicStringtitle;publicintrating;publicStringyear;publicStringgenre;publicStringcountry;publicintprice;}3、在MainActivityjava中添加如下代码publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ superonCreate(savedInstanceState); setContentView(Rlayoutactivity_main); //实例化我们的DBHelper DBHelperdbHelper=newDBHelper(this); //调用了这个方法后,DBHelper中的onCreate才会执行 dbHelpergetReadableDatabase(); }}4、创建结果:

[解决办法]
单纯使用的话,只需要一个SystemDataSQLiteDLL就行了。照我打的名字在网上搜肯定有。不要考虑版本,版本肯定是越高越好。
使用sqlite3exe命令行工具就行了
自增列列名使用Interger并且作为主键,而不是int这个是有区别的
如果要有个维护界面的话,下载一个sqladmin之类的就OK了。
sql的语法基本上和sqlserver一模一样,学起来没什么门槛。

没接触过嵌入式软件。
SQL和SQLLite应该差不多吧,SQL嵌入式是一个方向。
SQL已经开放了C语言应用程序的接口像ODBC之类都是可以的。你百度下应该有相关资料。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13359001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-21
下一篇 2023-07-21

发表评论

登录后才能评论

评论列表(0条)

保存