[android] android下创建一个sqlite数据库

来源:http://www.chinese-glasses.com 作者:Web前端 人气:169 发布时间:2020-03-14
摘要:时间: 2019-12-03阅读: 80标签: 谎言 Sqlite数据库是开源的c语言写的数据库,android和iphone都使用的这个,首先需要创建数据库,然后创建表和字段,android提供了一个api叫SQLiteOpenHelper数据库

时间: 2019-12-03阅读: 80标签: 谎言

Sqlite数据库是开源的c语言写的数据库,android和iphone都使用的这个,首先需要创建数据库,然后创建表和字段,android提供了一个api叫SQLiteOpenHelper数据库的打开和创建类。

“我们对计算机的自信可能使我们犯错误,因为我们希望将现实世界都转化为代码。”

 

程序员有充分的理由感到自豪,因为其他人是无权进入数据库 并更改的。世界越是依赖计算机定义,程序员的能力就越强。

具体使用比如:创建一个class叫PersonSQLiteOpenHelper用户数据库类,继承SQLiteOpenHelper,父类是个抽象类要实现onCreate()和onUpgrate()方法,此时会报错要求创建构造方法,构造方法的参数:Context上下文作用是告诉程序数据库创建在哪个目录下,String name数据库文件的名字,factory游标工厂一般我们都写null系统默认的,version数据库的版本从1开始,构造方法完成数据库就可以被创建。

实际上,没有什么代码是完美的代码,计算机也会经常犯错误。

 

当然,许多问题源于我们的程序员所做的假设,这些假设虽然在某些时候是正确的,但在根本上是不正确的。正如马克·吐温(Mark Twain)所说:“这不是让您陷入困境的原因,但是您肯定会知道事实。”

OnCreate(SQLiteDatabase db)方法是数据库第一次被创建时回掉,用来创建表以及初始化参数,参数就是我们创建的数据库。调用SQLiteDatabase对象的execSQL()方法执行sql语句,首先要创建表和mysql的基本一样,执行这条sql语句,create table person (id integer primary key autoincrement,name  varchar(20) not null default “” ) varchar的数字实际没有意义,给程序员看的,超过了也无所谓。

编程语言不同

 

曾经我们也满是理想,我们曾写过很长的项目启动宣言,然后向老板保证,这次,采用新的语言将改变一切,同时精彩的软件功能将从键盘上快速涌现,以至每个项目都将提前完工。

当new出来helper对象的时候,数据库并不会被创建,只有当helper对象调用了getWritableDatabase()方法或者getReadableDatabase()时候才会被创建。使用测试用例来测试一下,但是helper类需要上下文对象,测试框架提供了一个方法叫getContext()来得到上下文对象,数据库文件的地址/data/data/包名/database/下面,是私有的权限

可是到了最后,我们将数据粘贴在变量中并编写一些 if-then 逻辑来对其进行测试,慢慢消磨了程序员的梦想。程序员在他们的代码中看到了结构的伟大之处,并梦想着从中消除所有的低效率。因此,他们称之为“脚手架”,“平台”或“框架”,他们希望所有内容都可以用代码来编写。哎,下一个任务又具有不同的代码结构。

10bet 1

最后,所有这些都是技巧和语法上的砂石。结构性消除了编码寿命的痛苦,直至其逐渐消失。计算机是由晶体管构成的,没有任何巧妙的标点符号和类型理论可以掩盖一个事实,即我们所有的代码都归结为像一点点掺杂的硅,选择在代码中向左或向右向下移动来优化,没有其他技巧可以逾越。

helper代码:

框架越来越好

 

也许您是因为对Vue 中构建的页面不满意而在React 中构建了一个新的 Web 应用程序?还是因为 WordPress 界面笨拙且过时,您将Ruby 与一些由模板引擎构建的静态页面包装在一起?还是您将所有内容重写为更小、更新或更酷的产品,例如 Marko 或 Glimmer 或 Ghost?程序员一直在寻找完美的框架,但是像彩虹的尽头那样的完美的框架永远不会出现。

package com.tsh.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
    /**
     * 构造方法
     * @param context
     */
    public PersonSQLiteOpenHelper(Context context) {
        super(context, "person.db", null, 1);
    }
    /**
     * 数据库第一次创建完成的回调
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="create table person (id integer primary key autoincrement,name varchar(10) not null default '')";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

因此,当开发人员创建新框架来修补旧框架的问题并一路引入新问题时,我们会一遍又一遍地看到。如果框架添加了服务器端渲染,则会使服务器瘫痪。但是,如果一切都留给客户,他们就会开始放慢脚步。每个新功能都需要在时间、代码和网络带宽之间进行权衡。

 

null 可以接受

测试用例:

弄清楚如何处理空指针是现代语言设计的一个大问题。有时我认为我编写的Java 代码的一半工作是在检查指针是否为 null。

package com.tsh.database.test;

import com.tsh.database.PersonSQLiteOpenHelper;

import android.test.AndroidTestCase;

public class TestPersonDb extends AndroidTestCase {
    public void testPerson() throws Exception{
        PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext());
        helper.getWritableDatabase();
    }
}

某些语言使用问号检查 null 的方法会有所帮助,但这并不能解决问题。许多现代语言试图通过完全消除 null 来测试问题。如果编译器告警必须初始化每个变量,则永远不能设置为 null。

 

这一发现的乐趣在几行新代码中逐渐消失,因为数据结构经常存在信息的漏洞。人们将表单上的行留空、有时数据还不可用。然后,您需要一些谓词来确定元素是否为空。

如果元素是字符串,需要测试长度是否为零。如果在类型定义上花了足够的时间和精力,通常可以针对特定问题提出合乎逻辑的建议,至少在有人修改规范之前。完成几次后,你将开始希望得到一个简单的单词,表示一个 null。

计算机可以捕捉人的选择

性别选择代码问题对程序员来说是一个大雷区。计算机处理固定的选项列表和定义明确的菜单没有问题,但是需求人员不断更改规则,如一所非常前卫的学校也仅仅是在表单给出了两种性别选择。

计算机科学家从来没有真正解决过这类问题,他们只是添加了另一层间接寻址,在这种情况下,它是指向空字符串字段的指针,人们可以在其中填写自己的选择。然后,一些笑话出现,并选择“ his”作为代词,这使一些孩子发笑,另一些人则感到冒犯。

此设计失败模式一次又一次出现。如果您强迫每个人都使用名字和姓氏,那么有些人将只有一个名字。或者,有人不想被一串 Unicode 字符所认识。而且,如果有人为自己的姓名字符串选择了新的表情符号,但该表情符号未在列表框列出,该怎么办?

Unicode 代表所有文本编码协议

10bet,当委员会经常开会,试图确定哪些表情符号应包含在人类交流的标志符号的最终列表中。他们还会抛弃某些表情符号,从而否认某人的感受。

如果全世界都发现表情符号过于局限,促使他们转向将文字与文化偶像的图片混合在一起,那么任何表情符号列表都足够吗?

本文由10bet发布于Web前端,转载请注明出处:[android] android下创建一个sqlite数据库

关键词:

最火资讯