質問編集履歴

1

ソースコード不備でした

2021/07/17 08:49

投稿

agsTaka
agsTaka

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,113 @@
1
- プリペアドステートメントを使用してデータを登録(insert)したいのですがうまくきません。
1
+ プリペアドステートメントを使用してデータを登録(insert)したいのですがうまくきません。
2
+
3
+ なお、DBは問題なく作成でき、ContentValuesを使用した動作は確認できております。
2
4
 
3
5
 
4
6
 
7
+ 一番悩んで試行錯誤している部分は、
8
+
9
+ 1._idへの値はどのように指定したらいいのか?
10
+
11
+ (定義:_id integer primary key autoincrement)
12
+
13
+ 2.integer値を格納したいが、bindLongしか見つけることができない
14
+
15
+ という点です。
16
+
17
+
18
+
19
+ ご教授いただけましたら幸いです。
20
+
21
+
22
+
23
+ ```java
24
+
25
+ [DB定義部]
26
+
27
+
28
+
29
+ //SQL文定義
30
+
31
+ String sql
32
+
33
+ = "Create table product (" +
34
+
35
+ "_id integer primary key autoincrement," +
36
+
37
+ "productid text not null," +
38
+
5
- なお、ContentValuesを使用した動作は確認できております。
39
+ "name text not null," +
40
+
41
+ "price integer default 0)";
42
+
43
+ //SQL実行
44
+
45
+ db.execSQL(sql);
46
+
47
+
48
+
49
+ ```
50
+
51
+
52
+
53
+
54
+
55
+ ```java
56
+
57
+ [insert処理部]
58
+
59
+ try {
60
+
61
+ //トランザクション制御開始
62
+
63
+ db.beginTransaction();
64
+
65
+
66
+
67
+ //プリペアド用代入
68
+
69
+ _productid = productid.getText().toString();
70
+
71
+ _name = name.getText().toString();
72
+
73
+ _price = Integer.parseInt(price.getText().toString());
74
+
75
+
76
+
77
+ //プリペアドステートメント
78
+
79
+ String sqlInsert = "INSERT INTO product (_id,productid,name,price) VALUES (?,?,?,?)";
80
+
81
+ SQLiteStatement stmt;
82
+
83
+ stmt = db.compileStatement(sqlInsert);
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+ //変数のバインド
92
+
93
+ stmt.bindLong(1, _idIdx);
94
+
95
+ stmt.bindString(2, _productid);
96
+
97
+ stmt.bindString(3, _name);
98
+
99
+ stmt.bindLong(4, _price);
100
+
101
+
102
+
103
+ stmt.executeInsert();
104
+
105
+
106
+
107
+ //トランザクション制御修了
108
+
109
+ db.endTransaction();
110
+
111
+
112
+
113
+ ```