数据库的初始化和升级(代码)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.hanqi.testapp3.TestActivity2"
11     android:orientation="vertical">
12
13     <Button
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="初始化数据库"
17         android:onClick="bt1_OnClick"/>
18
19     <Button
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="升级数据库"
23         android:onClick="bt2_OnClick"/>
24
25
26 </LinearLayout>

.xml

  1 package com.hanqi.testapp3;
  2
  3 import android.content.ContentValues;
  4 import android.database.Cursor;
  5 import android.database.sqlite.SQLiteDatabase;
  6 import android.database.sqlite.SQLiteOpenHelper;
  7 import android.support.v7.app.AppCompatActivity;
  8 import android.os.Bundle;
  9 import android.util.Log;
 10 import android.view.View;
 11 import android.widget.EditText;
 12 import android.widget.Toast;
 13
 14 public class TestActivity2 extends AppCompatActivity {
 15
 16
 17     @Override
 18     protected void onCreate(Bundle savedInstanceState) {
 19         super.onCreate(savedInstanceState);
 20         setContentView(R.layout.activity_test2);
 21
 22     }
 23
 24     //初始化数据库
 25     public void bt1_OnClick(View v)
 26     {
 27         //使用工具类得到数据库对象
 28         MyDBHelper myDBHelper=new MyDBHelper("test.db",2);
 29
 30         //得到连接
 31         SQLiteDatabase sd=myDBHelper.getReadableDatabase();
 32
 33         Toast.makeText(TestActivity2.this, "连接数据库成功", Toast.LENGTH_SHORT).show();
 34
 35         //关闭连接
 36         sd.close();
 37     }
 38
 39     //升级数据库
 40     public void bt2_OnClick(View v)
 41     {
 42         //使用工具类得到数据库对象
 43         MyDBHelper myDBHelper=new MyDBHelper("test.db",2);
 44
 45         //得到连接
 46         SQLiteDatabase sd=myDBHelper.getWritableDatabase();
 47
 48         Toast.makeText(TestActivity2.this, "连接数据库成功", Toast.LENGTH_SHORT).show();
 49
 50         //关闭连接
 51         sd.close();
 52     }
 53
 54
 55
 56     //实现SQLiteOpenHelper的内部类
 57     class MyDBHelper extends SQLiteOpenHelper
 58     {
 59         //构造方法
 60         public MyDBHelper(String dbname,int ver)
 61         {
 62             //显示调用父类的构造方法
 63             //必须在第一行
 64             super(TestActivity2.this,dbname,null,ver);
 65
 66         }
 67
 68         //创建和初始化数据库
 69         @Override
 70         public void onCreate(SQLiteDatabase db) {
 71
 72             //1.执行创建数据库的语句
 73             String sql="CREATE TABLE t_user" +
 74                     "(_id  INTEGER PRIMARY KEY " +
 75                     "AUTOINCREMENT NOT NULL," +
 76                     "name  VARCHAR(20) NOT NULL," +
 77                     "sex CHAR(1),age  INTEGER)";
 78             db.execSQL(sql);
 79
 80             Log.e("TAG","表创建成功");
 81             //2.执行初始化数据的语句,insert语句
 82             ContentValues cv=new ContentValues();
 83
 84             cv.put("name","张三");
 85             cv.put("sex","男");
 86             cv.put("age","20");
 87
 88             //执行插入,返回主键
 89             long l=db.insert("t_user",null,cv);
 90
 91             Log.e("TAG","初始化数据="+l);
 92         }
 93
 94         //升级数据库
 95         //触发条件:当版本号增大
 96         @Override
 97         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 98
 99             //修改数据
100             if(newVersion==2)
101             {
102                 ContentValues cv=new ContentValues();
103                 cv.put("name","李四");
104
105                 String sql="update t_user set name=‘李四‘ where  _id=1 ";
106
107                 String[] str={"1","18"};
108                 //调用db的更新方法
109                 int i=db.update("t_user", cv, "_id=? and age>?",str);
110
111                 Log.e("TAG","升级数据 数据条数="+i);
112             }
113
114         }
115     }
116 }

.java

时间: 2024-10-11 06:23:36

数据库的初始化和升级(代码)的相关文章

iOS App初始化或者升级,涉及本地数据库迁移的问题

总体思路 一般app启动之后,都有一个初始化的过程.此外后续app升级,还需要考虑数据迁移.所以初始化和数据迁移的框架,在初期的版本就要考虑好 总结一下我们的app采取的方案: 1.在持久化的文件夹内(比如UserDefaults或者Documents目录),用一个字段保存老版本号 2.在开始初始化之前,读取老版本号,以及当前版本号 3.如果该应用是第一次加载,那么老版本号就取不到(因为是初次加载,这个字段还没有保存),那么就可以执行初始化过程:如果取到了老版本号,就不执行初始化 4.初始化完成

数据库升级代码学习

  业务场景及需求:全国每一个银行营业网点[指跟公司合作的]产品上线后.肯定须要升级业务以应对新的功能需求,那么数据库每次升级更新时都是在数据库管理工具中运行升级脚本.很不方便.此时需求:可以在业务系统代码中设置开关,须要升级的时候打开开关系统自己主动直接完毕升级. 思路:1)数据库里面有个对应的版本号号,服务里面有个版本号文件[以要升级到的版本号号命名]. 2)升级的时候查出服务里面的版本号和数据库里面的版本号,比对:假设版本号一样不升级.假设版本号不一样就运行服务里面的升级脚本. 以下看看基

Asp.net Mvc 数据库上下文初始化器

在Asp.net Mvc 和Entity FrameWork程序中,如果数据库不存在,EF默认的行为是新建一个数据库.如果模型类与已有的数据库不匹配的时候,会抛出一个异常. 通过指定数据库上下文对象初始化器,可以执行删除和重新创建数据库,并用种子方法填充数据库. 当Asp.net Mvc 应用程序每一次运行的时候,Entity Framework 能够自动创建(或者删除重新创建)数据库.你能够指定每一次程序运行的时候,或者模型与已有数据库不匹配的时候执行 删除重新创建操作,通过指定Seed 方法

mysql数据库二进制初始化出现:170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option &#39;--skip-locking&#39; 170425 17:47:04 [ERROR] Aborting 解决办法

[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/application/mysql/ --datadir=/application/mysql/data/Installing MySQL system tables...170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking

Android数据库之创建和升级数据库(中)

上一篇文章中,简单介绍了一下android数据库的一些基本概念,那么从本节开始,就实战一下Android数据库的创建和升级. 上文中,也介绍了,SQLiteOpenHelper是一个抽象类,是我们用来创建和升级数据库的最佳实践.下面直接以代码方式,演示一下数据库的创建操作. <span style="font-size:18px;">package com.happy.db.db; import android.content.Context; import android

使用Entity Framework迁移完数据库后,每次修改代码(非模型代码)后都报错。

问题:使用Entity Framework迁移完数据库后,每次修改代码(非模型代码)后都报错: 支持“XXXDbContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269). 这时如果执行 Add-Migration 生成的迁移代码是空的.于是重新Update-Database,结果却是No pending explicit migrations. 不过这时是不

PL/SQL跑在Oracle 64位数据库上初始化错误

安装完Oracle(64位).PL/SQL后运行PL/SQL出现如下的错误: 网上查资料说,我的PL/SQL与ORACLE不兼容,即PL/SQL不支持64位的ORACLE,因此得下一个32位的ORCALE客户端并配置相应的参数: 解决步骤小记: 一.下载ORACLE 32位客户端 下载地址:http://www.onlinedown.net/soft/102902.htm(Oracle 10g客户端精简绿色版) 二.解压到ORACLE 安装目录下一个叫product的目录下,并重命名一下(命名不

JDBC连接sql server数据库的详细步骤和代码

JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: [java] view plaincopyprint? 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 成功加载后,会将Driver类的实例注册到DriverManager类中. 2.提供JDBC连接的URL •连接URL定

关于系统数据库和服务现场升级的一些看法

本人目前在一家相当于创业公司吧. 工作也快满一年了,马上着手准备第二次出差去升级我们的系统,但是突然想到一件事情,让我颇有感触,是关于系统现场升级的. 我们迭代开发的系统隔一段时间就会需要到用户的现场去为其进行系统升级,其中升级包括客户端,服务端,以及数据库. 目前我们的做法是什么? 升级服务的方法是,将带过去的新的服务完全替换掉旧的服务,然后人工修改所有服务的相关配置. 升级数据库的方法是,在自己的笔记本上面部署一套我们需要升级的版本的数据库,然后到现场之后利用TOAD的schema的对比功能