sqlite」タグアーカイブ

UnityでSQLiteの使い方 リンク

UnityでSQLiteの使い方

UnityにSQLiteを導入する
https://qiita.com/CreateVector3/items/b15dc570faed517360d4

UnityでSQLiteを扱う方法
https://qiita.com/hiroyuki7/items/5335e391c9ed397aee50

UnityでSQLite!SQLiteUnityKitに潜む4つの問題点と対応方法
https://fantastic-works.com/archives/406#i-3

UnityのSQLiteUnityKitのマルチバイト問題 (。・ω・。)
https://anz-note.tumblr.com/post/91559515821/unity%E3%81%AEsqliteunitykit%E3%81%AE%E3%83%9E%E3%83%AB%E3%83%81%E3%83%90%E3%82%A4%E3%83%88%E5%95%8F%E9%A1%8C-%CF%89

(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない|(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない

  1. アイフォンアプリの場合はこちら
  2. Androidアプリ開発、今日のエラーまとめ(1)ー(6)分、2003年9月22日〜11月7日(1)から(6)まとめのリンクはこちら
  3. (7) 今日のエラーAndroidアプリ開発、andEngine GLES2 Anchor Center,box2d |manifest.xmlの記述ミスでintentでエラーはこちら

アイフォンアプリをアンドロイドアプリに移植中です。
 アイフォンの開発言語はobjective-cで、アンドロイドはJAVA言語になります。JAVAをベースにしてアンドロイドアプリをつくるとしてもアンドロイドアプリのための固有の開発方法がありそうです。

(1)ワーニング AndroidManifest.xml

Description Resource Path Location Type
Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details. AndroidManifest.xml

android:targetSdkVersion=”18″
しました。

(2)android エミュレータ 動かない,エミュレータを起動してもアプリが実行されないときは

EclipseからAndroidエミュレータを起動してもアプリが実行されない
この記事を参考にしてようやくハローワールドが表示されました。

(3)intent 画面遷移で移動できない、対処はAndroidActivity.xmlの設定忘れ

AndroidActivity.xmlに

(4)adView = new AdView(this, AdSize.BANNER, “ID-XXX”);でエラー

Could not find class ‘com.google.ads.AdView’, referenced from method com.AAA.bentannote2.MainActivity.onCreate

Admobのライブラリの挿入方法が教科書のヘルプであるグーグルの説明と異なり、変わったようです。

正しくは、
libs/GoogleAdMobAdsSdk-XXX.jarとなるように、GoogleAdMobAdsSdk-XXX.jarをコピーします。
私は手動で、コピペしました。
もし、すでに、教科書通りにGoogleAdMobAdsSdk-XXX.jarを挿入していたら、挿入済みを一旦削除してください。
すでに登録されているGoogleAdMobAdsSdk-XXX.jarがあるとエラーになります。

AdMobの使い方
Could not find class ‘com.google.ads.AdView’

(5)配列が初期化されていない

宣言だけして、初期化を忘れていました。
 myArray=new ArrayList();
宣言をしたら、どこにでもいいのでまず、初期化を書くように習慣づけたいと思います。

(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

x-code,android アイフォンアプリを作ったのでアンドロイドアプリを作ってみよう

アンドロイドアプリなんて作ることはないと思ってました。
アンドロイドアプリを作成するのに、今度はJAVAを覚えなくてはならないという手間が嫌でした。それに、アンドロイドアプリを作っても果たしてダウンロードをする人がいるのか、作っても無駄な作業にナルト思っていました。
しかし、自分の作ったアイフォンアプリが比較的よくできたと思ってしまったので、アンドロイドアプリを作ることにしました。それに、自分が使うアプリなら、誰もダウンロードしてくれなくても、自分が使えていればそれで十分なのかもしれません。

まずは、作り方から勉強します。
内容と構成はアイフォンアプリと同じなので必要な機能を覚えて行きます。

まずは簡単なアプリからはじめます。

アイフォンアプリのx-codeと比較しながらメモをとっていきます。
いずれ、アンドロイドアプリの作り方をすぐに忘れてしまいます。忘れても良いように書いておきます。

<アイフォンアプリをアンドロイドに移植開発>

アイフォンアプリは、スマートボードを利用してViewを作成すると便利です。アンドロイドは、1アプリで画面展開を一覧表示する機能はないので、1View1画面毎に表示して、作業をします。
レイアウトXMLがView画面に相当し、JAVAクラスからでもオブジェクトを作成できます。

 説明文中で、アイフォンアプリ、iOS, XCODE, objective-Cと書いた場合は、アイフォンアプリについての説明を記載したものです。アンドロイドアプリ、eclipse, JAVAと書いた場合は、アンドロイドアプリについての説明を記載したものです。
 開発環境、開発言語と細かく区別せず大きな枠で説明しています。解釈上意味不明なところがあると思います。

1.ログ出力

アイフォンアプリ,XCODEのログ出力
NSLog(@”DB is OK”);
DB is OK
と出力されます。

アンドロイド, JAVAのログ出力

画像

Log.d(“DB”, “OK”);
最初の引数はタグで、ログキャットのタグの列に表示されます。そして、第2引数はテキストの列に表示されます。
DB OK
として、列に別れて出力されます。こちらの方が見やすいかもしれません。

2.ボタンアクションコードの記載方法

XCODEの場合は、IBActionのメソッドに記載します。

JAVAの場合は、いくつかあります。
また、以下のコードは、少し、コードが長くなります。他にも、レイアウトxmlのボタンに記載してメソッドのように整理できる記載もあります。今回は書籍でよく見かけるコードにしました。
[c]
Button button;
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.ClickListerner(){
public void onClick(View v){
//here
}
});
[/c]
[c]
Button backButton;
backButton=(Button)findViewById(R.id.backButton);
backButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
[/c]
と、メソッドの引数の中に、メソッドがあるように記載します。

3.データベース SQLite3,CoreData

アイフォンでは、PCで事前に作成したSQLite3のファイルをそのまま利用して読み込みます。
書き込みは、CoreDataが利用できます。なお、CoreDataのエンティティ(テーブルみたいなもの)が増えた場合は、インストールしたアプリを削除しないとアプリが起動しない場合があります。

アンドロイド
データベースSQLite3のファイルを参照のみの利用でも、assetフォルダに保管し、使用するときにSQLite3ファイル自体を一旦コピーしてから利用します。
そして、assetフォルダに配置するファイルは1MB以下にする必要があるとのこと。大きすぎるファイルは要注意です。分割するか圧縮する必要があるようです。

参考サイト
[Android Programming] sqliteのDBファイルをPCでつくってandroidで使う – ipreachableの日記

既存のDBをAndroidで使えるようにする方法 – hentekoのdev日記

SQLiteからの結果をListViewに表示する

既存のsqliteファイルをAndroidに組み込む : ナカノ製作所開発備忘録

Y.A.M の 雑記帳: Android あらかじめ作成した SQLite database をアプリに取り込む

4.オブジェクト、ボタン、ラベル、テキストエディット

 XCODEでは、ボタン等をViewに配置し、ヘッダーファイルにドラッグし紐付けします。プログラムで使用しないオブジェクトは紐付けの必要はありません。
 
 JAVAでは、レイアウトのXMLで配置し、クラスに宣言、命令を記載します。
なお、異なるクラスでも同じレイアウトXMLを利用できます。

5.レイアウトVIewの他クラスの利用

アイフォン
オブジェクトを自由に好きなように配置できます。

アンドロイド
レイアウトのXMLに別のレイアウトXMLのオブジェクトを利用できる
レイアウトの自由度は低い。まるでウェブブラウザーで表示するhtmlファイルです。
ただし、様々な画像サイズのタブレットに対応できる柔軟性を持っていますが、デザイン性が低くなるかもしれません。

6.クラスをまたがって変数を共有する

XCODEでは、デリゲートを使用します。

JAVAでは、Applicationを継承したクラスを作ります。
Activityにまたがってグローバルに変数などのオブジェクトを共有するには

7.画像、音声ファイル

アイフォン
プロジェクトのどの場所でもよいですが、フォルダをプロジェクトに作ってわかりやすく配置します。
例えば、pic/back, number, buttonなど。

アンドロイド
resフォルダに保存し、音声ファイルはres/rawに保存します。

8.エミュレータ

アイフォン
アイフォン、iPadのエミュレータが起動します。
レティナ対応のiPadは大きすぎるので、縮小して表示します。特に難しい設定はありません。

アンドロイド
どのターゲットのエミュレータを起動するのか設定し実行します。
もし、エミュレータが実行しても、アプリが起動しない場合は、、、、、を選択します。
ここが一番わかりにくかったです。

9.文字列の取得

アンドロイド
strings.xmlの文字列を取得したいとき
getString(R.string.year) yearはH25年度として登録

10 レイアウトに配置されたTextViewに、文字配列を与えてListViewに表示する

アイフォン
テーブルビューを使用します。

アンドロイド
(1)は、レイアウトxmllistview_row.xmlに配置されたtextView1、textView2に、マップのquestion, answerの文字列をそれぞれ与えます。
そして、このコードにはありませんが、listview.xmlのListViewに表示させるものです。
(2)は、マップなしの単純なArrayListを、listview_row.xmlに配置されたtextView1に配置させるものです。

[c]
(1)SimpleAdapter simpleAdapter=new SimpleAdapter(this, globals.contactArrayList, R.layout.listview_row,new String[]{"question, answer"}, new int[]{R.id.textView1,R.id.textView2});

(2)adapterQuestionString=new ArrayAdapter<String>(this, R.layout.listview_row,R.id.listRowTextView,globals.arrayPartStrings);

[/c]

メタルギア ソリッド V グラウンド・ゼロズ 通常版(初回生産限定特典:本篇『MGSV:TPP』で使用可能なマザーベース スタッフDLC同梱&Amazon.co.jp限定特典:本篇『MGSV:TPP』で使用可能な特殊ダンボール箱DLC付き)プラットフォーム: PlayStation 4、発売予定日は2014年3月20日

Titan Fallタイタンフォール [オンラインコード] [ダウンロード]発売予定日時は2014年3月13日、ガンダムやバルキリー、装甲騎兵ボトムズみたいに人型ロボットに搭乗して敵を倒すゲーム、コックピットからのカメラ映像がリアリティがあり、まさに未来のロボットを操縦する感覚で遊べるゲーム

グラビアアイドル、清水みさと/恋して、みさと先生!


【GoPro HERO3+】LCDタッチ バックパック(リミテッドエディション)「ALCDB-303」在庫あり
「LCDタッチ バックパック」は、GoProカメラ用のLCDタッチスクリーンです。
カメラ背面に装着し、フレーミングや再生など、LCDスクリーンの利便性を提供します。
脱着式なので、不要な時は取り外してGoProカメラをできるだけ軽く小さくコンパクトにすることができます。

アイフォンアプリ制作のSQLite3を使ってDB、今日のエラー 

今日のエラー アイフォンアプリ制作のSQLite3を使ってDB、エラー

sqlite3_step エラーで検索して得たネット検索の一部抜粋
実機確認で正常に動作しない場合の対処


databaseName=@”Data.db3″
NSArray *paths = NSSearchPathForDirectoriesInDomains
   (NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDir = [paths objectAtIndex:0];

NSString *dbPath =
  [documentsDir stringByAppendingPathComponent:databaseName];

これでどうでしょうか。

現在のフォルダは・・・/iPhone Simulator/4.1ですのでシミュレータのみになると思います。

www.sqlite.org column
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

NEXT次の対策 

iPhoneアプリ開発、その(81) いくぜ解析SQLiteBooks!

>このブログを参考にさせてもらいました。自分のselect文が間違っている様な気がしてきました。いままで、SQLite3のDBファイルが悪い、間違いと思っていましたが、単に、勘違いをしているように思います。

一旦整理します。

正常にDBからカラム列を取得できていません。
今のところで考えられる原因は、

「DBファイルSQLite3ファイルが正しく作成できていない。」
と考えていました。
他のコードは本を参考にしているし、ほんのソースは実行できている。

では、自分で作成したテーブルを確認します。
現在のテーブルは3つのカラム列があります。
テーブル名はcd
フィールド名はそれぞれ
card_id, fore, back

そこで、セレクト文を以下のようにして、comlumnで取得しようとしました。

(1)select card_id form cd; 1つのカラム列を取得したい
(1-2)select back from cd; 1つのカラム列を取得したい
(2)select card_id,fore,back from cd; 3つのカラム列を取得したい

全部エラーとなってDBから情報を取得できていません。

<検証してみましょう。>

・具体的な指定
(1)select card_id form cd;とした場合
sqlite3_column_int(statement,0);//3つのカラム列の1番目で0

(1-2)select back from cd;とした場合
誤り? sqlite3_column_int(statement,2);//3つのカラム列の3番目で2
正  sqlite3_column_int(statement,0);//3つのカラム列の3番目で2であるが、セレクト文で指定したのは一つなので、0???

(2)select card_id,fore,back from cd;
(1-2)の例で行けば、
ここで、”back”の値を取得したいとすれば、
sqlite3_column_int(statement,2);//3つのカラム列の3番目でセレクト文でカラム列を3つ指定しているので、その指定が、0,1,2とする。

つまり、
sqlite3_column_int(sqlite3_stmt*, int iCol)の
int iColは、セレクト文の指定カラム列から取得したカラム列の順番の番号-1ということでしょうか。

なので、いままで、テーブルに設定されたカラム列の順番をint iColに指定してきました。
そのため、例えば、
(1-2)select back from cd;のように、セレクト文を指定して、これは、指定が1つしかないので、本来は”0”なのですが、テーブルに設定されたカラム列の順番から考えると3-1=2なので

sqlite3_column_int(statement,2);とするとNULLが返ってきて
セレクト文は1つなので、
sqlite3_column_int(statement,0);が正しい。

なのでしょうか?
試してみます。

解答

1.SQLite3のファイルは問題なし。
2.sqlite3_column_int(sqlite3_stmt*, int iCol)の
int iColは、Select文で指定するカラム列を基準に考える。DBのカラム列の順番ではない。
つまり、指定する番号である値をセレクト文に合わせて変更していなかったことが原因であり、勘違いしていたという思い込みでした。
3.思い込みを無くして、正しくAPI、関数を理解しましょう。
4.悩んだところにこだわるのは、1,2日間まで。それ以上は他の部分を先に進めましょう。
  時間のある時にじっくりと調べればよいのです。
  解決しても大局からすれば、ほんの僅かな成果しかありません。
  プログラムは動いてこそ意味があります。プログラムの研究をしているのではありません。動かしたいのです。