テーブルの確認 sqlite>.tables.tables コマンドでデータベース内のテーブル一覧を表示する テーブルスキーマの表示 sqlite>.schema mytable.schema コマンドで指定のテーブルのスキーマを表示できる テーブル出力の整形.explain コマンドを使うと テー

Similar documents
Microsoft Word - Android_SQLite講座_画面800×1280

日 力力 生 行行 入 入 力力 生 用 方

2 // TODO Auto-generated method stub float x = event.getx(); float y = event.gety(); String action = ""; switch(event.getaction()) { case MotionEvent.

そして 取得した OutputStream インスタンスを使い 文字コードは UTF-8 として PrintWriter インスタンスを生成して あとは PrintWriter.append() で書き込みたい文字 列を渡して close() で保存する というだけです ファイルの読込み方法 それで

Microsoft Word - Android_SQLite講座_画面800×1280

1: Preference Display 1 package sample. pref ; 2 3 import android. app. Activity ; 4 import android. content. Intent ; 5 import android. content. Shar

Taro-korattsu.jtd

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

Hello, Android

補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.t

android2.indd

補足資料 インテントによるアプリケーションとアクティビティの呼出し Android アプリのキモとなるインテントとは何? インテント ( 呼び出し要求 ) とは Android 独自の機能です 簡単にいえばアプリケーションや他のアクティビティを呼び出す機能ですが 他のアプリケーションを機能や扱えるデ

Microsoft Word - _Intent.doc

tkk0408nari

「Android Studioではじめる 簡単Androidアプリ開発」正誤表


データアダプタ概要

PowerPoint Presentation

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

データベースからデータの 読 み 込 み Cursorクラス

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

mySQLの利用

SQLite データベース IS04 組み込み 1

2-2. TableLayout TableLayout は任意のビューを表形式で配置したい場合に利用する (HTML の Table に近いイメー ジ ) 2-3. FrameLayout ビューを重ねて表示するためのレイアウト 後から配置した部品が前面に来る仕様となっている 3. まとめ レイア

文字列操作と正規表現

Prog2_10th

データベースアクセス

Prog2_5th

Prog2_6th

Prog2_6th

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

Microsoft PowerPoint pptx

PowerPoint Presentation

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

About me! 足立昌彦 / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert (Android)

JAVA とテンプレート

非推奨メソッド等の掲載について

_IMv2.key

Prog2_2nd

Prog2_10th

android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:text="go"

Microsoft Word - Android_DI講座_画面800×1280

10th Developer Camp - B5

Dolteng Scaffoldに対する機能追加とマスタ-ディテールScaffoldの紹介

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

Prog2_2nd

日 用 用 面 示 用 用 方

Prog2_6th

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Microsoft Word - A05_AndroidプログラミングJUMP_画面800×1280

IT プロジェクト

Prog1_10th

標準化 補足資料

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

スライド 0

Java講座

プログラミング基礎I(再)

早分かりS2Dao

Seasar.NET入門

Another Activity オブジェクトは生成されてもいないのである これは 後述の onpause メソッ ドの説明からも明らかである 翻訳 : A の onpause から返ってこない限り B は create されない ため ここで長い処理は行ってはならない 実際にトレースをおこなってみ

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Microsoft Word - Lab5d-DB2組み込みSQL.doc

新・明解Java入門

Java演習(4) -- 変数と型 --

Prog1_15th

Microsoft Word - Android_DI講座_画面800×1280

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

ALG ppt

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

プロジェクト毎に名前を指定する ( ここでは AndroidTest) 動作可能な最低バージョン メインターゲットのバージョン すべて設定してクリック チェックを外す クリック

1: Android 2 Android 2.1 Android 4 Activity Android Service ContentProvider BroadcastReceiver Activity ( ): Android 1 Android Service ( ): ContentProv

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

TopLink å SampleClient.java... 5 Ò readallsample() querysample() cachesample() Ç..

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

Microsoft Word - tutorial3-dbreverse.docx

Android でサービスしよう! 日本 Android の会 2 月 21 日大阪セミナ- 有山圭二 ( 有限会社シーリス )

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Microsoft Word - SQL.rtf

ValueHolder... 9 Customer.java Oracle TopLink 10g(10.1.3) È Volume3 2

日本アンドロイドの会 四国支部 Kickoff ミーティング in ABC2009

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

Prog2_5th

S2DaoでもN:Nできます

TestDesign for Web

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

Microsoft Word - NonGenList.doc

import android.database.sqlite.sqlitedatabase.cursorfactory; public class DatabaseHelper extends SQLiteOpenHelper { /* データベース名 */ private final static

第14回若年者ものづくり競技大会「業務用ITソフトウェア・ソリューションズ」職種 模擬競技課題

ALG ppt

JavaプログラミングⅠ

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

Android Layout SDK プログラミング マニュアル

Prog1_6th

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

Transcription:

Sqlite 関連コマンド紹介 adb shell コマンド 現在 どのディレクトリに居るかは pwd コマンドでわかります pwd 次に今いるディレクトリ上にどんなファイル ディレクトリ一覧があるかを知るために ls コマンドを実行します ls ディレクトリへの移動は cd コマンドを実行します cd フォルダ ( ディレクトリ ) 名 tmp ディレクトリを作ってみます ディレクトリ作成は mkdir コマンドを使います mkdir tmp Sqlite コマンド データベースの作成データベースの作成はコマンドラインツールにデータベースファイル名を指定することで行う データベースへの接続も同時に行う # sqlite3 test.db データベースへの接続 データベースの作成と同じです ファイルが無ければ新規作成れる # sqlite3 test.db データベースを削除する データベースは単なるファイルなので adb Shell コマンドで削除することができます #rm test.db 1

テーブルの確認 sqlite>.tables.tables コマンドでデータベース内のテーブル一覧を表示する テーブルスキーマの表示 sqlite>.schema mytable.schema コマンドで指定のテーブルのスキーマを表示できる テーブル出力の整形.explain コマンドを使うと テーブル表示の際の整形機能の ON/OFF を設定できる OFF( デフォルト ) の場合 sqlite>.explain OFF sqlite> select * from mytable; 10 komine 3 suzuki ON の場合 sqlite>.explain ON sqlite> select * from mytable; id name ---- -------------- 10 komine 3 ツールの終了.quit または.exit コマンドを使う sqlite>.exit 2

Android で データベースの作成 ( パターン 1) データベースの作成から行います ApplicationContext クラスで用意されている openorcreatedatabase メソッドを使います サンプルコード ) package jp.javadrive.android; import android.app.activity; import android.os.bundle; import android.widget.linearlayout; import android.widget.toast; import android.view.view; import android.view.viewgroup; import android.widget.button; import android.view.view.onclicklistener; import android.content.context; import android.database.sqlite.sqlitedatabase; import java.io.filenotfoundexception; public class JavaDriveAndroid extends Activity implements OnClickListener { private final int FP = ViewGroup.LayoutParams.FILL_PARENT; private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; private Button button; private final String DB_NAME = "db01_01.db";// ファイル名 private final int DB_MODE = Context.MODE_PRIVATE;// 非公開 @Override protected void oncreate(bundle icicle) { super.oncreate(icicle); 3

LinearLayout linearlayout = new LinearLayout(this); linearlayout.setorientation(linearlayout.horizontal); setcontentview(linearlayout); button = new Button(this); button.settext("create Database"); button.setonclicklistener(this); linearlayout.addview(button, createparam(wc, WC)); private LinearLayout.LayoutParams createparam(int w, int h) { return new LinearLayout.LayoutParams(w, h); public void onclick(view v) { // データベースファイルがなければ生成 既にあれば開く SQLiteDatabase db = this.openorcreatedatabase(db_name, DB_MODE, null); Toast.makeText(this, "db01_01.db が作成されました ", Toast.LENGTH_ SHORT).show(); // this.deletedatabase(db_name);// 削除の場合 db.close();// データベースファイルを閉じる 4

テーブルの作成 作成したデータベースに対してテーブルを作成します テーブルの作成やデータの追加など SQL 文を実行するには SQLiteDatabase クラスで用意されている execsql メソッドを使 います イベント処理の部分のみコードを変更してください public void onclick(view v) { // データベースファイルがなければ生成 既にあれば開く SQLiteDatabase db = this.openorcreatedatabase(db_name, DB_MODE, null); // テーブル生成の SQL 文 String sql = "create table shouhin (" + "id integer primary key autoincrement, " + "name text not null);"; try { db.execsql(sql);// SQL 文を実行 // 確認表示 Toast.makeText(this, "shouhin テーブルが作成されました ", Toast.LENGTH_SHORT).show(); catch (SQLException e) { Log.e("ERROR", e.tostring()); db.close();// データベースファイルを閉じる // onclick( ) 5

データの追加 / 更新 / 削除 テーブルに対してデータを追加したり削除するには SQL 文を用意して実行します SQL 文が異なるだけでテーブルの作成の場合と同じく SQLiteDatabase クラスで用意されている execsql メソッドを使います イベント処理の部分のみコードを変更してください public void onclick(view v) { // データベースファイルがなければ生成 既にあれば開く SQLiteDatabase db = this.openorcreatedatabase(db_name, DB_MODE, null); // レコード追加の SQL 文 String sql = "insert into shouhin (name) values('pc');"; //String sqldelete = "DELETE FROM shouhin WHERE name = 'PC'";// 削除の場合 try { db.execsql(sql);//sqldelete // 確認表示 Toast.makeText(this, " レコードが1 件 追加されました ", Toast.LENGTH_SHORT).show(); catch (SQLException e) { Log.e("ERROR", e.tostring()); // onclick() db.close();// データベースファイルを閉じる 6

SQL 文を指定してデータを取得 テーブルからデータを取得するには SQL 文を用意してクエリを発行します SQL 文に適合するデータがあった場合に データベースからデータを受け取ります SQL 文を指定してクエリを発行するに SQLiteDatabase クラスで用意されている query メソッドや rawquery メソッドを使用します query() 簡単な検索ならこれが使いやすい ただし 使いにくいが複雑な検索も可能 rawquery() SQL 文を渡して データもバインドできるので 複雑な検索や一部条件だけ異なる繰り返しの検索などに便利例えば 以下のような SQL なら rawquery の方が断然分かりやすいです // rawquery で SELECT を実行 String sql = select foo.a, bar.b from foo, bar where foo.a = bar.a; ; Cursor c = db.rawquery(sql, null); // query で SELECT を実行 String table = foo, bar ; String[] columns = { foo.a, bar.b ; String selection = foo.a = bar.a ; Cursor c = db.query(table, columns, selection, null, null, null, null); 検索結果の取り扱い 検索した結果は Cursor という形で取得できます カーソルの概念は下の図のような感じで す 図 : カーソルの概念図 7

結果のリストとそのリストを指すカーソルがあって カーソルを動かしながら結果を取り出す というような処理をします サンプルコードを修正 ) package jp.javadrive.android; import android.app.activity; import android.os.bundle; import android.widget.linearlayout; import android.widget.textview; import android.widget.toast; import android.util.log; import android.view.view; import android.view.viewgroup; import android.widget.button; import android.view.view.onclicklistener; import android.content.context; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; public class JavaDriveAndroid extends Activity implements OnClickListener { private final int FP = ViewGroup.LayoutParams.FILL_PARENT; private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; private Button button; // 以下追加 private TextView textresult; private final String DB_NAME = "db01_01.db"; private final int DB_MODE = Context.MODE_PRIVATE; @Override protected void oncreate(bundle icicle) { super.oncreate(icicle); 8

LinearLayout linearlayout = new LinearLayout(this); // 以下変更 linearlayout.setorientation(linearlayout.vertical); setcontentview(linearlayout); button = new Button(this); // 以下変更 button.settext(" レコード表示 "); button.setonclicklistener(this); linearlayout.addview(button, createparam(wc, WC)); // 以下追加 textresult = new TextView(this); textresult.settext(""); linearlayout.addview(textresult, createparam(wc, WC)); private LinearLayout.LayoutParams createparam(int w, int h) { return new LinearLayout.LayoutParams(w, h); public void onclick(view v) { // データベースファイルがなければ生成 既にあれば開く SQLiteDatabase db = this.openorcreatedatabase(db_name, DB_MODE, null); // 検索 SQL 文 String sql = "select * from shouhin;"; try { // 検索結果を文字列で詰め込む StringBuilder sb = new StringBuilder(); // 検索結果 Cursor オブジェクトの取得 Cursor curs = db.rawquery(sql, null); // 1 行 1 行 下に移動しながら 行の各列データを取り出す while (curs.movetonext()) { 9

// 列データを取り出す sb.append(curs.getint(0) + ":" + curs.getstring(1) + " n"); // 検索結果のレコードをテキストビューに表示 textresult.settext(new String(sb)); catch (SQLException e) { Log.e("ERROR", e.tostring()); db.close();// データベースファイルを閉じる public void onclick(view v) { // データベースファイルがなければ生成 既にあれば開く SQLiteDatabase db = this.openorcreatedatabase(db_name, DB_MODE, null); try { ContentValues insertvalue = new ContentValues(); insertvalue.put("name", "orange"); // 追加 db.insert("shouhin", null, insertvalue); // 確認表示 textresult.settext("1 件 レコードを追加しました "); catch (SQLException e) { Log.e("ERROR", e.tostring()); db.close();// データベースファイルを閉じる 10

update メソッドによるデータの更新 データ追加の場合と同じくデータ更新のためのメソッドも用意されています SQLiteDatabase クラスで用意されている update メソッドを使います update public int update(string table, ContentValues values, String whereclause, String[] whereargs) 1 番目の引数には対象のテーブル名を指定します 2 番目の引数には更新するデータの各カラムに対する値を保持している ContentValues クラスのオブジェクトを指定します 3 番目の引数には更新の対象となるレコードを特定するための条件を記述します SQL 文 で言えば WHERE 句の箇所に該等します 例えば id=10 などです 4 番目の引数もレコード特定のための条件だと思われますが 説明が無い為詳細が分かりま せんでした public void onclick(view v) { // データベースファイルがなければ生成 既にあれば開く SQLiteDatabase db = this.openorcreatedatabase(db_name, DB_MODE, null); try { //id が 2 の商品名 (name) を banana に変更 ContentValues cv = new ContentValues(); cv.put("name", "banana"); db.update("shouhin", cv, "id = 2", null); //db.delete("shouhin ", "id = 3", null);// 削除 11

// 確認表示 textresult.settext("1 件 レコードを更新しました "); catch (SQLException e) { Log.e("ERROR", e.tostring()); db.close();// データベースファイルを閉じる テーブル結合用サンプル ) # 商品テーブル create table goods (code primary key, cateid, name); insert into goods values('b001', 1, insert into goods values('d001', 2, ' 吾輩は猫である '); ' ゴジラ '); # カテゴリーテーブル create table cate (id primary key, name); insert into cate values(1, ' 和書 '); insert into cate values(2, 'DVD'); 12