SQLitcookie如何存储信息多条信息

博客分类:
原创, 欢迎转载,转载请在明显处注明! 谢谢。
上一篇跟各位童鞋介绍了SharedPreference 和 File流如何存储数据,并且推荐使用FileOutputStream/FileInputStream来存储咱们游戏数据,那么这一篇则是像大家介绍另外一种适合游戏数据存储的方式:SQLite 轻量级数据库!
先介绍几个基本概念知识:
什么是SQLite:
SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,只需要几百KB!!!!!
SQLite的特性:
轻量级使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
独立性SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
隔离性SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
跨平台SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
多语言接口SQLite 数据库支持多语言编程接口。
安全性SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据.
优点:1.能存储较多的数据。
2.能将数据库文件存放到SD卡中!
什么是 SQLiteDatabase?
一个 SQLiteDatabase 的实例代表了一个SQLite 的数据库,通过SQLiteDatabase 实例的一些方法,我们可以执行SQL 语句,对数
据库进行增、删、查、改的操作。需要注意的是,数据库对于一个应用来说是私有的,并且在一个应用当中,数据库的名字也是惟一的。
什么是 SQLiteOpenHelper ?
根据这名字,我们可以看出这个类是一个辅助类。这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的
方法getWritableDatabase(),或者getReadableDatabase()方法的时候,如果当时没有数据,那么Android 系统就会自动生成一
据库。SQLiteOpenHelper 是一个抽象类,我们通常需要继承它,并且实现里边的3 个函数,
什么是 ContentValues 类?
ContentValues 类和Hashmap/Hashtable 比较类似,它也是负责存储一些名值对,但是它存储的名值对当中的名是一个
String 类型,而值都是基本类型。
什么是 Cursor ?
Cursor 在Android 当中是一个非常有用的接口,通过Cursor 我们可以对从数据库查询出来的结果集进行随
机的读写访问。
OK,基本知识就介绍到这里,下面开始上代码:还是按照我的一贯风格,代码中该解释的地方都已经在代码中及时注释和讲解了!
顺便来张项目截图:
先给出xml:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"&
&TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="SQL 练习!(如果你使用的SD卡存储数据方式,为了保证正常操作,请你先点击创建一张表然后再操作)"
android:textSize="20sp" android:textColor="#ff0000" android:id="@+id/tv_title" /&
&Button android:id="@+id/sql_addOne" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="插入一条记录"&&/Button&
&Button android:id="@+id/sql_check" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="查询数据库"&&/Button&
&Button android:id="@+id/sql_edit" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="修改一条记录"&&/Button&
&Button android:id="@+id/sql_deleteOne" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="删除一条记录"&&/Button&
&Button android:id="@+id/sql_deleteTable" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="删除数据表单"&&/Button&
&Button android:id="@+id/sql_newTable" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="新建数据表单"&&/Button&
&/LinearLayout&
xml中定义了我们需要练习用到的几个操作按钮,这里不多解释了,下面看java源码:先看我们继承的 SQLiteOpenHelper 类
package com.
import android.content.C
import android.database.sqlite.SQLiteD
import android.database.sqlite.SQLiteOpenH
import android.util.L
* @author Himi
* @解释 此类我们只需要传建一个构造函数 以及重写两个方法就OK啦、
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public final static int VERSION = 1;// 版本号
public final static String TABLE_NAME = "himi";// 表名
public final static String ID = "id";// 后面ContentProvider使用
public final static String TEXT = "text";
public static final String DATABASE_NAME = "Himi.db";
public MySQLiteOpenHelper(Context context) {
// 在Android 中创建和打开一个数据库都可以使用openOrCreateDatabase 方法来实现,
// 因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;
// 创建成功则返回一个 SQLiteDatabase对象,否则抛出异常FileNotFoundException。
// 下面是来创建一个名为"DATABASE_NAME"的数据库,并返回一个SQLiteDatabase对象
super(context, DATABASE_NAME, null, VERSION);
// 在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表;
public void onCreate(SQLiteDatabase db) {
String str_sql = "CREATE TABLE " + TABLE_NAME + "(" + ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + TEXT + " text );";
// CREATE TABLE 创建一张表 然后后面是我们的表名
// 然后表的列,第一个是id 方便操作数据,int类型
// PRIMARY KEY 是指主键 这是一个int型,用于唯一的标识一行;
// AUTOINCREMENT 表示数据库会为每条记录的key加一,确保记录的唯一性;
// 最后我加入一列文本 String类型
// ----------注意:这里str_sql是sql语句,类似dos命令,要注意空格!
db.execSQL(str_sql);
// execSQL()方法是执行一句sql语句
// 虽然此句我们生成了一张数据库表和包含该表的sql.himi文件,
// 但是要注意 不是方法是创建,是传入的一句str_sql这句sql语句表示创建!!
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 一般默认情况下,当我们插入 数据库就立即更新
// 当数据库需要升级的时候,Android 系统会主动的调用这个方法。
// 一般我们在这个方法里边删除数据表,并建立新的数据表,
// 当然是否还需要做其他的操作,完全取决于游戏需求。
Log.v("Himi", "onUpgrade");
下面看最重要的MainActivity中的代码:
package com.
import java.io.F
import java.io.IOE
import android.app.A
import android.content.ContentV
import android.database.C
import android.database.sqlite.SQLiteD
import android.os.B
import android.view.V
import android.view.W
import android.view.WindowM
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
// ------------第三种保存方式--------《SQLite》---------
* @author Himi
* @保存方式:SQLite 轻量级数据库、
* @优点: 可以将自己的数据存储到文件系统或者数据库当中, 也可以将自己的数据存
储到SQLite数据库当中,还可以存到SD卡中
* @注意1:数据库对于一个游戏(一个应用)来说是私有的,并且在一个游戏当中,
数据库的名字也是唯一的。
* @注意2 apk中创建的数据库外部的进程是没有权限去读/写的,
我们需要把数据库文件创建到sdcard上可以解决类似问题.
* @注意3 当你删除id靠前的数据或者全部删除数据的时候,SQLite不会自动排序,
也就是说再添加数据的时候你不指定id那么SQLite默认还是在原有id最后添加一条新数据
* @注意4 android 中 的SQLite 语法区分大小写的!!!!!这点要注意!
String UPDATA_DATA = "UPDATE himi SET text='通过SQL语句来修改数据'
WHERE id=1";
千万 不能可以写成
String UPDATA_DATA = "updata himi set text='通过SQL语句来修改数据'
where id=1";
public class MainActivity extends Activity implements OnClickListener {
private Button btn_addOne, btn_deleteone, btn_check, btn_deleteTable,
btn_edit, btn_newT
private TextV
private MySQLiteOpenHelper myOpenH// 创建一个继承SQLiteOpenHelper类实例
private SQLiteD
//---------------以下两个成员变量是针对在SD卡中存储数据库文件使用
// private File path = new File("/sdcard/himi");// 创建目录
// private File f = new File("/sdcard/himi/himi.db");// 创建文件
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv_title);
btn_addOne = (Button) findViewById(R.id.sql_addOne);
btn_check = (Button) findViewById(R.id.sql_check);
btn_deleteone = (Button) findViewById(R.id.sql_deleteOne);
btn_deleteTable = (Button) findViewById(R.id.sql_deleteTable);
btn_newTable = (Button) findViewById(R.id.sql_newTable);
btn_edit = (Button) findViewById(R.id.sql_edit);
btn_edit.setOnClickListener(this);
btn_addOne.setOnClickListener(this);
btn_check.setOnClickListener(this);
btn_deleteone.setOnClickListener(this);
btn_deleteTable.setOnClickListener(this);
btn_newTable.setOnClickListener(this);
myOpenHelper = new MySQLiteOpenHelper(this);// 实例一个数据库辅助器
----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:
if (!path.exists()) {// 目录存在返回false
path.mkdirs();// 创建一个目录
if (!f.exists()) {// 文件存在返回false
f.createNewFile();//创建文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public void onClick(View v) {
//备注2----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:
mysql = SQLiteDatabase.openOrCreateDatabase(f, null);
//备注3--- 如果想把数据库文件默认放在系统中,那么创建数据库mysql如下操作:
mysql = myOpenHelper.getWritableDatabase(); // 实例数据库
if (v == btn_addOne) {// 添加数据
// ---------------------- 读写句柄来插入---------
// ContentValues 其实就是一个哈希表HashMap, key值是字段名称,
//Value值是字段的值。然后 通过 ContentValues 的 put 方法就可以
//把数据放到ContentValues中,然后插入到表中去!
ContentValues cv = new ContentValues();
cv.put(MySQLiteOpenHelper.TEXT, "测试新的数据");
mysql.insert(MySQLiteOpenHelper.TABLE_NAME, null, cv);
// inser() 第一个参数 标识需要插入操作的表名
// 第二个参数 :默认传null即可
// 第三个是插入的数据
// ---------------------- SQL语句插入--------------
// String INSERT_DATA =
// "INSERT INTO himi (id,text) values (1, '通过SQL语句插入')";
// db.execSQL(INSERT_DATA);
tv.setText("添加数据成功!点击查看数据库查询");
} else if (v == btn_deleteone) {// 删除数据
// ---------------------- 读写句柄来删除
mysql.delete("himi", MySQLiteOpenHelper.ID + "=1", null);
// 第一个参数 需要操作的表名
// 第二个参数为 id+操作的下标 如果这里我们传入null,表示全部删除
// 第三个参数默认传null即可
// ----------------------- SQL语句来删除
// String DELETE_DATA = "DELETE FROM himi WHERE id=1";
// db.execSQL(DELETE_DATA);
tv.setText("删除数据成功!点击查看数据库查询");
} else if (v == btn_check) {// 遍历数据
//备注4------
Cursor cur = mysql.rawQuery("SELECT * FROM "
+ MySQLiteOpenHelper.TABLE_NAME, null);
if (cur != null) {
String temp = "";
int i = 0;
while (cur.moveToNext()) {//直到返回false说明表中到了数据末尾
temp += cur.getString(0);
// 参数0 指的是列的下标,这里的0指的是id列
temp += cur.getString(1);
// 这里的0相对于当前应该是咱们的text列了
"; // 这里是我整理显示格式 ,呵呵~
if (i % 3 == 0) // 这里是我整理显示格式 ,呵呵~
temp += "\n";// 这里是我整理显示格式 ,呵呵~
tv.setText(temp);
} else if (v == btn_edit) {// 修改数据
// ------------------------句柄方式来修改 -------------
ContentValues cv = new ContentValues();
cv.put(MySQLiteOpenHelper.TEXT, "修改后的数据");
mysql.update("himi", cv, "id " + "=" + Integer.toString(3), null);
// ------------------------SQL语句来修改 -------------
// String UPDATA_DATA =
// "UPDATE himi SET text='通过SQL语句来修改数据'
WHERE id=1";
// db.execSQL(UPDATA_DATA);
tv.setText("修改数据成功!点击查看数据库查询");
} else if (v == btn_deleteTable) {// 删除表
mysql.execSQL("DROP TABLE himi");
tv.setText("删除表成功!点击查看数据库查询");
} else if (v == btn_newTable) {// 新建表
String TABLE_NAME = "himi";
String ID = "id";
String TEXT = "text";
String str_sql2 = "CREATE TABLE " + TABLE_NAME + "(" + ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + TEXT
+ " text );";
mysql.execSQL(str_sql2);
tv.setText("新建表成功!点击查看数据库查询");
// 删除数据库:
// this.deleteDatabase("himi.db");
} catch (Exception e) {
tv.setText("操作失败!");
} finally {// 如果try中异常,也要对数据库进行关闭
mysql.close();
以上代码中我们实现了两种存储方式:
一种存储默认系统路径/data-data-com.himi-databases下,另外一种则是保存在了/sdcard-himi下,生成数据库文件himi.db
那么这里两种实现方式大概步骤和区别说下:
-----------如果我们使用默认系统路径存储数据库文件:
第一步:新建一个类继承SQLiteOpenH写一个构造,重写两个函数!
第二步:在新建的类中的onCreate(SQLiteDatabase db) 方法中创建一个表;
第三步:在进行删除数据、添加数据等操作的之前我们要得到数据库读写句柄得到一个数据库实例;
注意: 继承写这个辅助类,是为了在我们没有数据库的时候自动为我们生成一个数据库,并且生成数据库文件,这里也同时创建了一张表,因为我们在onCreate里是在数据库中创建一张表的操作;这里还要注意在我们new 这个我们这个MySQLiteOpenHelper 类实例对象的时候并没有创建数据库哟~!而是在我们调用 (备注3)MySQLiteOpenHelper ..getWritableDatabase() 这个方法得到数据库读写句柄的时候,android 会分析是否已经有了数据库,如果没有会默认为我们创建一个数据库并且在系统路径data-data-com.himi-databases下生成himi.db 文件!
(如果我们使用sd卡存储数据库文件,就没有必要写这个类了,而是我们自己Open自己的文件得到一个数据库,西西,反而方便~ )
-----------如果我们需要把数据库文件存储到SD卡中:
第一步:确认模拟器存在SD卡,关于SD卡的两种创建方法见我的博文:【Android 2D游戏开发之十】
第二步:(备注1)先创建SD卡目录和路径已经我们的数据库文件!这里不像上面默认路径中的那样,如果没有数据库会默认系统路径生成一个数据库和一个数据库文件!我们必须手动创建数据库文件!
第三步:在进行删除数据、添加数据等操作的之前我们要得到数据库读写句柄得到一个数据库实例;(备注2)此时的创建也不是像系统默认创建,而是我们通过打开第一步创建好的文件得到数据库实例。这里仅仅是创建一个数据库!!!!
第四步:在进行删除数据、添加数据等操作的之前我们还要创建一个表!
第五步:在配置文件AndroidMainfest.xml 声明写入SD卡的权限,上一篇已经介绍权限了,不知道的自己去看下吧。
有些童鞋不理解什么默认路径方式中就有表?那是因为我们在它默认给我们创建数据库的时候我们有创建表的操作,就是MySQLiteOpenHelper类中的onCreate()方法里的操作!所以我们如果要在进行删除数据、添加数据等操作的之前还要创建一个表,创建表的方法都是一样的。
总结:不管哪种方式我们都要-创建数据库-创建表-然后进行操作!
在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体方法如下:
以下是方法和说明:
move 以当前的位置为参考,将Cursor移动到指定的位置,成功返回true, 失败返回false
moveToPosition 将Cursor移动到指定的位置,成功返回true,失败返回false
moveToNext
将Cursor向前移动一个位置,成功返回true,失败返回false
moveToLast 将Cursor向后移动一个位置,成功返回true,失败返回 false。
movetoFirst
将Cursor移动到第一行,成功返回true,失败返回false
isBeforeFirst
返回Cursor是否指向第一项数据之前
isAfterLast
返回Cursor是否指向最后一项数据之后
返回Cursor是否关闭
isFirst 返回Cursor是否指向第一项数据
返回Cursor是否指向最后一项数据
返回指定位置的值是否为null
返回总的数据项数
返回当前行中指定的索引数据
本篇源码:
zhouxiaoli521
浏览: 424122 次
来自: 北京
good job!
lgj 写道cursor 没有关闭,最好加上 ...
cursor 没有关闭,最好加上finally 后关上fina ...
zhouxiaoli521 写道weinifk 写道publi ...
weinifk 写道public static void ma ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)用SQLite存储你重要的数据 - 简书
用SQLite存储你重要的数据
①SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用, 不仅支持标准SQL语法,还遵循ACID(数据库事务)原则,无需账号,使用起来非常方便!②前面我们学习了使用文件与SharedPreference来保存数据,但是在很多情况下, 文件并不一定是有效的,如多线程并发访问是相关的;app要处理可能变化的复杂数据结构等等! 比如银行的存钱与取钱!使用前两者就会显得很无力或者繁琐,数据库的出现可以解决这种问题, 而Android又给我们提供了这样一个轻量级的SQLite,为何不用?③SQLite支持五种数据类型:NULL,INTEGER,REAL(浮点数),TEXT(字符串文本)和BLOB(二进制对象) 虽然只有五种,但是对于varchar,char等其他数据类型都是可以保存的;因为SQLite有个最大的特点:你可以各种数据类型的数据保存到任何字段中而不用关心字段声明的数据类型是什么,比如你 可以在Integer类型的字段中存放字符串,当然除了声明为主键INTEGER PRIMARY KEY的字段只能够存储64位整数! 另外, SQLite 在解析CREATE TABLE 语句时, 会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息如下面语句会忽略 name字段的类型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))小结下特点:SQlite通过文件来保存数据库,一个文件就是一个数据库,数据库中又包含多个表格,表格里又有 多条记录,每个记录由多个字段构成,每个字段有对应的值,每个值我们可以指定类型,也可以不指定 类型(主键除外)。几个相关的类
SQLiteOpenHelper:抽象类,我们通过继承该类,然后重写数据库创建以及更新的方法, 我们还可以通过该类的对象获得数据库实例,或者关闭数据库!
SQLiteDatabase:数据库访问类:我们可以通过该类的对象来对数据库做一些增删改查的操作
Cursor:游标,有点类似于JDBC里的resultset,结果集!可以简单理解为指向数据库中某 一个记录的指针!创建一个SQLiteStep 1:自定义一个类继承SQLiteOpenHelper类Step 2:在该类的构造方法的super中设置好要创建的数据库名,版本号Step 3:重写onCreate( )方法创建表结构Step 4:重写onUpgrade( )方法定义版本号发生改变后执行的操作使用SQL语句操作数据库当然,你可能已经学过SQL,会写相关的SQL语句,而且不想用Android提供的这些API, 你可以直接使用SQLiteDatabase给我们提供的相关方法:execSQL(SQL,Object[]):使用带占位符的SQL语句,这个是执行修改数据库内容的sql语句用的rawQuery(SQL,Object[]):使用带占位符的SQL查询操作 另外前面忘了介绍下Curosr这个东西以及相关属性,这里补充下: ——Cursor对象有点类似于JDBC中的ResultSet,结果集!使用差不多,提供一下方法移动查询结果的记录指针:move(offset):指定向上或者向下移动的行数,整数表示向下移动;负数表示向上移动!moveToFirst():指针移动到第一行,成功返回true,也说明有数据moveToLast():指针移动到最后一样,成功返回moveToNext():指针移动到下一行,成功返回true,表明还有元素!moveToPrevious():移动到上一条记录getCount( )获得总得数据条数isFirst():是否为第一条记录isLast():是否为最后一项moveToPosition(int):移动到指定行
//我所经历的大数据平台发展史(三):互联网时代 o 上篇http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02 编者按:本文是松子(李博源)的大数据平台发展史...
什么是SQLite?数据库存储数据的步骤 ●SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快 什么是数据库? ●数据库(Database)是按照数据...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
特约撰稿人 孙骁骥 (北京,) 俗话说,一部二十四史,从何说起?有史家回答说,宜从明史说起。为什么别的朝代不提而偏偏提明朝呢?这是因为中国两千年的封建帝制发展到明代,各个方面已臻于成熟,最具代表性。汉学家费正清在《中国:传统与变革》一书...
内容来自《沸腾之下——对大众消费类单品营销的观察与思考》第十一章,欢迎来我的个人网站下载全书阅读,更期待能和您交流。个人网站地址:www.alibobo.me 本文意义上的新产品 埃弗雷特oMo罗杰斯在《创新扩散》一书中对创新做出了这样的解释,“一项创新是被采用的个人或团体...
有首歌叫太委屈, 女性的盆底肌表示, 在妊娠期和产后, 盆底肌也很委屈! 盆底肌, 封闭骨盆底的肌肉群, 它原本是有弹性、充满活力的, 犹如一张“吊网”, 尿道、膀胱、阴道、子宫、直肠等脏器被这张“网”紧紧吊住, 从而维持正常位置以便行使其功能。 在女性怀孕妊娠期间, 在孕...
关键词:可塑造、自控力、每天坚持 今天开始进行《自控力lab》的读写训练。今天看的是《自控力》电子书1-50叶。 首先,在这里做一下这周读写训练的安排, 1、按照要求每天在微信群里面打卡。 2、每天阅读50页《自控力》,并进行输出总结的填写。 其次,今天看《自控力》的收获:...
去海滩是夏季的必修课之一,选泳装是去海滩的必修课之一。想让自己的泳装看起来比别人更好看,除了选购时要多考虑自身的身材因素外,更重要的就是要懂得结合时尚潮流,发挥自我优势了。 1.保守连体泳衣 如果对自己的身材不够自信,那也可以选择相对保守一点的泳衣,但沙滩毕竟是个性感的聚集...求助,用SQLite如何存储一小段文字和时间【android开发吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:122,311贴子:
求助,用SQLite如何存储一小段文字和时间收藏
用SQLite存储50字左右的一小段文字和时间,用sql语句应该怎样声明,用什么类型,有存储和读取的代码参考就更好了谢谢
android系统,一键线刷快速恢复手机系统问题,海量原厂系统包,原版专用系统升级工具,全自动通用驱动安装,MTK,高通全兼容,一体包直接刷,搭配全图解刷机工具!
怎么都没人回答啊
text 和integer
有百度过啊,但是太杂就来这里问问,你知道吗
这真的是传说中的十五字不信你数
百度一下你就知道
首先你要建立数据库和表,然后创建你要存数据数据的对应字段,文字和时间我觉得用varchar类型就够了,存储的话用插入语句(insert),更新用(update),读取的话用查询语句(select)
登录百度帐号推荐应用}

我要回帖

更多关于 cookie如何存储信息 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信