androidでSQLliteにテーブルを作成
- android開発で、SQLliteへのテーブル作成に関して質問します。
- テーブルが作成されていない場合にエラーが発生するのか、事前にテーブルを作成する必要があるのか質問します。
- 実際にテーブルを作成してからinsert処理を実行したいと思っていますが、エラーが発生して登録できません。
- ベストアンサー
androidでSQLliteにテーブルを作成
いつもお世話になっています。 android開発で、SQLliteへのテーブル作成に関して質問します。 http://d.hatena.ne.jp/kuwalab/20110215/p1 のページを参考にEditTextデータをSQLliteに登録したいと 考えています。 実際に以下のurlで、insert処理を実行するとエラーが表示され、登録ができません。 それは、まだテーブルができていないがためにエラーが発生するということなのでしょうか? 前もってテーブルを作っておかなければならないということなのでしょうか? エラー発生場所は、 SQLiteDatabase db = databaseHelper.getWritableDatabase(); //↓ この時、empというテーブルは既にできていないといけない??? db.execSQL("INSERT INTO emp(name, age) VALUES('" + name + "'," + age + ")"); nameEditText.setText(""); ageEditText.setText(""); Toast.makeText(getApplicationContext(), "データを登録しました。", Toast.LENGTH_SHORT).show(); のあたりです。 宜しくお願いします。
- kannitiha
- お礼率53% (79/149)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>前もってテーブルを作っておかなければならないということなのでしょうか? それは、もちろんそうです。質問のURLの記事を見ましたが、そこでも最初にcreate tableでテーブルを作成していますよ。もう少しさかのぼって記事を読んでみましょう。
関連するQ&A
- 【android】SQLiteについて質問です
androdo上で、データベースアプリを開発しようと思い、以下のようにインサート文を書いていたところ ひとつのメソッドでは入りきらず、いくものメソッドに渡るインサート文を書いています。 db.execSQL("insert into LvXY(No,Lv_name,Lv_skill) values (1,'3','a');"); db.execSQL("insert into LvXY(No,Lv_name,Lv_skill) values (1,'.7','b');"); db.execSQL("insert into LvXY(No,Lv_name,Lv_skill) values (1,'.9','c');"); これの数が少ない時は良かったのですが、 数が増えてくるとコンパイルするときに、 Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 129533 into a non-jumbo instruction! このようなエラーが出て困っています。 エラーの原因しましては、この数万行にも渡るインサート文だと思うのですが・・・ 拙い文章で申し訳ありませんが、どなたか解決方法がわかる方がいらっしゃればよろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- 変数のinsertに関しまして
MySQLのインサートに関して質問です。 2つの値を登録したい場合、 下記のように対応すれば、 データの挿入は通常どおり完了しますが、 insert into テーブル名 (フィールド1, フィールド2) values (値1, 値2);  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 私の場合は、 「ken_name」と「machi_name」という変数を、 上記でいうところの、 「値1」と「値2」に入力したいと思っています。 変数の指す部分は、 それぞれ30文字程度の英数字です。 プログラム内で、 以下のように、 インサートのクエリー処理を行ってみたら、 DB接続も正常に出来ているし、 エラーとかも一切出ていないのですが、 DB内のテーブルに何も登録されていませんでした。 insert into テーブル名 (フィールド1, フィールド2) values (ken_name, machi_name);  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ やり方としては、合っていますでしょうか? 何かアドバイスいただけると嬉しいです。 宜しくお願い致します。
- 締切済み
- MySQL
- tutorial/funcs.sqlの中のSQL文
の中に CREATE TABLE EMP ( name text, salary integer, age integer, cubicle point ); INSERT INTO EMP VALUES ('Sam', 1200, 16, '(1,1)'); INSERT INTO EMP VALUES ('Claire', 5000, 32, '(1,2)'); INSERT INTO EMP VALUES ('Andy', -1000, 2, '(1,3)'); INSERT INTO EMP VALUES ('Bill', 4200, 36, '(2,1)'); INSERT INTO EMP VALUES ('Ginger', 4800, 30, '(2,4)'); -- the argument of a function can also be a tuple. For instance, -- double_salary takes a tuple of the EMP table CREATE FUNCTION double_salary(EMP) RETURNS integer AS 'SELECT $1.salary * 2 AS salary' LANGUAGE SQL; SELECT name, double_salary(EMP) AS dream FROM EMP WHERE EMP.cubicle ~= '(2,1)'::point; というコードが有るのですが 最後のWHERE EMP.cubicle ~= '(2,1)'::pointの ~= はどういうもので どんなときにつかうのでしょうか? また単なる = ではエラーになるようなのですが=との使い分けはどのようにすれば良いのでしょうか? よろしくお願いします
- ベストアンサー
- PostgreSQL
- Android JAVAへでの質問です
(←※この部分!) の意味がわからないのでどなたか教えていただけないでしょうか? private EditText edit1; ですが、なぜ private がついているのでしょうか?なくても動きましたが何か意味があるのでしょうか? そしてどうして、この子はここにいるのでしょうか? Button btn1 と一緒に仲良くいてもいいんじゃないでしょうか? ================ import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; public class Test2Activity extends Activity { private EditText edit1;(←※この部分!) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit1 = (EditText)this.findViewById(R.id.EditText1); Button btn1 = (Button)this.findViewById(R.id.button1); btn1.setOnClickListener(new MyClickA()); } class MyClickA implements OnClickListener { public void onClick(View view){ Editable e = edit1.getText(); int n = Integer.parseInt(e.toString()); Toast toast = Toast.makeText(getApplicationContext(), "数値=" + n, Toast.LENGTH_SHORT); toast.show(); } } }
- ベストアンサー
- Java
- insertを用いてテーブルにレコードを追加することができるのにもかか
insertを用いてテーブルにレコードを追加することができるのにもかかわらず、load data infile を用いるとerror1366と表示されてしまいます。解決方法を教えてください。 Windows7 mysqlは最新版を使っています。 インストールしたそのままの状態だと、insertを用いて日本語を挿入しようとするとerror 1366と出てしまってましたが、my.iniを書き換えることによってinsert table1 values (1,'ああ');といった操作でエラーが出ることはなくなりました。 しかしcsvファイルをload data infileを用いてインポートしようとすると、またerror 1366が出てしまいました。 インポートしようとしたファイルには日本語が書かれています。 英字だけのファイルを同様にインポートすると、エラーは出ませんでした。 <table1> id int(15) name varchar(255) 1,a 2,b 3,asdf … はインポート可能 。また insert table1 values (1,'あ'); も正常に動作。 1,あ 2,い … をインポートするとエラー。 これができないと先に進めません・・・ ご教授お願いします。
- 締切済み
- MySQL
- テーブルに入っているデータと重複チェックしたい
やりたいこと: phpを実行して取得したデータの内容と既にDBのテーブルに格納されているデータを 比較して、 異なっていれば、新しいデータとして INSERT INTO文で テーブルにデータを登録する。 同じであれば、登録しない。 という処理がしたいです。 $sql = "select * from hoge where url= $page_uri"; $kakunin = mysql_query($sql , $db ); if ( $page_uri == $kakunin ){ //同じデータならスキップ break; } else{ $sql = mysql_query("INSERT INTO hoge VALUES (0,'$page_uri','$pon')"); と書いているのですが、以下のエラーが出てしまいます。。 Fatal error: Cannot break/continue 1 level in /www/xx.php on line 42 これは、breakは使えないよ ってことでしょうか? breakでなくても やりたいことが実現できればこだわりはないのですが、、 アドバイスよろしくお願いします。
- 締切済み
- PHP
- IDENTITY列の複数テーブルへのINSERT
テーブルAへINSERTをした場合のIDENTITY列の値を 同じトランザクション内で テーブルBの別のフィールドへINSERTしたいのですが、 どのようにSQLを書けばよいのか、困っています。 どうか、ご教示お願い致します。 INSERT INTOTABLE_A (NAME_A) VALUES ('あいうえお') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'さしす') INSERT INTOTABLE_A (NAME_A) VALUES ('かきくけこ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'たちつ') INSERT INTOTABLE_A (NAME_A) VALUES ('さしすせそ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'なにぬ') TABLE_A ID NAME_A 5 'あいうえお' 6 'かきくけこ' 7 'さしすせそ' TABLE_B ID A_ID NAME_B 1 5 'さしす' 2 6 'たちつ' 3 7 'なにぬ'
- ベストアンサー
- SQL Server
- MySQL INSERT文 エラー
カラム名を指定してデータを挿入するのがうまくいきません。 テーブル(tb1)作成後、たとえば、 insert into tb1(number, name, age) values(A104, '渡辺', 23); と入力すると、 '> と出力されてしまいます。 何が間違っているんでしょうか? よろしくお願いいたします。
- ベストアンサー
- MySQL
- [PostgreSQL]別DBのテーブルのSelect、Insert
お世話になっております PostgreSQL8.1を使用しまして あるテーブルにInsertがかかると その内容を判断し別のテーブルに insertをする仕組みが必要になり いろいろ試してみて TriggerとFunctionを使用すれば 実装できるとこまでわかりました。 ただしその別テーブルが別DBに配置されているので そのテーブルに以下のようなInsert文を発行しても エラーになってしまいます。 Insert into SUB_DB.TEST_TBL values('test','date'・・・・); (SUB_DB:ストアドを実行しているのとは別のDB) ストアドから別テーブルを参照更新する手段を ご存知のかたご教授いただけますでしょうか。 よろしくお願いいたします。
- 締切済み
- PostgreSQL
- マルチテーブル・インサート
ご教授よろしくお願い致します。 現在、table_aにInsertされたカラム(no,name)のデータを同時にtable_bにも反映するSQL文を考えております。 【table_a】 no | name | price ============== 005 apple 500 001 banana 250 【table_b】 no | name | color ================= 005 apple red 001 banana yellow Insertをそれぞれのテーブルで実行すれば、もちろん反映はできるのですが一度のInsert文でできるのならそれにこしたことはありません。 いろいろ調べた結果、下記のサイトでできるようなことが記載してあったため、実行したのですが、『ALL』がシンタックスエラーとなってしまいます。 そのため、postgresのマニュアルを確認してみたところ、Insert文にALL句の指定は特別記載されていなかったため、できないとも思っているのですが… サイト↓ http://www.atmarkit.co.jp/fdb/rensai/sqlclinic12/sqlclinic12_1.html サイトを参考にしたSQL文 『INSERT ALL INTO table_a(no,name) VALUES(005,apple) INTO table_b(no,name) VALUES(005,apple); 』 何か良い方法をご存知の方がいましたら、ご教授よろしくお願い致します。同じことをUpadteでもやらなければいけないのですが、それはもう少し自分で考えてみます。 只、できないことが明白な場合は、ご指摘を頂けると有難いです。 環境としましては、 OS 【Windows xp】 DB 【PostgreSQL 8.2】 です。
- 締切済み
- PostgreSQL
お礼
ありがとうございました。 無事、解決できました。