美文网首页
数据库1

数据库1

作者: gogoingmonkey | 来源:发表于2017-04-13 14:07 被阅读6次

    创建数据库的API

    * SQLiteDatabase.openDatabase : 直接打开一个数据库

    * SQLiteDatabase.openOrCreateDatabase : 数据库存在就打开,不存在就创建

    创建表:语法:

    create table tabname(col1 type1 [not null][primary key], col2 type2[not null], ··· )注:tabname为表名col1、col2为字段名字type1、type2为字段类型在[]中的约束条件是可以选的

    字段名      类型            长度          约束            说明  id        INTEGER                      主键,自增长      编号  name      VARCHAR          20            非空            姓名  cid      INTEGER                                        所在班级  age      INTEGER                      大于18且小于60    年龄  gender    BIT                          默认为1,表示男    性别  score    REAL                                          成绩createtablestudent(idINTEGERPRIMARYKEYAUTOINCREMENT,nameVARCHAR(20)NOTNULL,    cidINTEGER,    ageINTEGERCHECK(age>18andage<60),    genderBITDEFAULT(1),    scoreREAL);注:SQL中不区分大小写

    示例代码:

    StudentDBHelper helper=new StudentDBHelper(this);

    helper.getReadableDatabase();//这段代码执行以后才会创建数据库

    /**

    * Student数据库打开和创建的帮助类

    * SQLiteOpenHelper:安卓提供给开发人员创建和维护数据库的工具

    */

    public class StudentDBHelper extends SQLiteOpenHelper {

    /**

    * @param context

    *            : 上下文

    * @param name

    *            : 数据库的名字

    * @param factory

    *            : 游标工厂,相当于一个光标,可以快速定位到文件的某一个位置

    *            默认情况下光标在文件的第0个位置

    *            默认情况下无需重写光标,所以传null即可

    * @param version

    *            : 版本号.整形

    */

    public StudentDBHelper(Context context) {

    super(context, "student.db", null, 1);

    // TODO Auto-generated constructor stub

    }

    // 数据库第一次创建执行的逻辑,一旦数据库创建了,这个方法就不会在执行了

    @Override

    public void onCreate(SQLiteDatabase db) {

    }

    // 数据库更新执行的逻辑

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    }

    .数据库表的创建

    数据库更新调用的方法

    数据库的增删改查

    * 添加操作

    public void add(Context context, String name, float money) {

    helper = new BankDBOpenHelper(context);

    SQLiteDatabase db = helper.getWritableDatabase();

    db.execSQL("insert into account (name,money) values (" + name + "," + money + ")");

    db.close();

    }

    * 删除操作

    public void del(Context context, String name) {

    helper = new BankDBOpenHelper(context);

    SQLiteDatabase db = helper.getWritableDatabase();

    db.execSQL("delete from account where name = '" + name + "'");

    db.close();

    }

    * 更新操作

    public void update(Context context, String name, float money) {

    helper = new BankDBOpenHelper(context);

    SQLiteDatabase db = helper.getWritableDatabase();

    db.execSQL("update account set money = " + money + " where name = '" + name + "'");

    db.close();

    }

    * 查询操作

    public float query(Context context, String name) {

    float money = 0;

    helper = new BankDBOpenHelper(context);

    SQLiteDatabase db = helper.getWritableDatabase();

    // 该方法的返回值是void,使用这个API对查询方法来说是没有意义的,所以不能用

    // db.execSQL("query account where name = "+name);

    // 方法的返回值是一个游标

    Cursor cursor = db.rawQuery(" select * from account where name = '" + name + "'", null);

    // 判断游标是否能指向一条数据

    boolean result = cursor.moveToFirst();

    if (result) {

    money = cursor.getFloat(0);

    }else{

    money = -1;

    }

    // 释放资源

    cursor.close();

    db.close();

    return money;

    }

    * 查看数据库内容的快捷方法

    * adb shell

    * cd /data/data/pkg name/databases

    * sqlite3 xx.db;

    .sql的注入问题和web的数据安全

    * '1' or '1'='1'

    安卓原生API实现增删改查

    谷歌API的优势

    * 手写SQL语句常见错误

    * from 写成 form

    * 中文全角字符的空格

    * 中文全角字符的问号

    * 不知道操作到底有没有成功

    相关文章

      网友评论

          本文标题:数据库1

          本文链接:https://www.haomeiwen.com/subject/vwkbattx.html