質問編集履歴

2

create tableの追加

2017/04/11 04:28

投稿

edoooooo
edoooooo

スコア478

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,24 @@
4
4
 
5
5
  ```java
6
6
 
7
+ "create table " + UserContract.Users.TABLE_NAME + "(" +
8
+
9
+ UserContract.Users._ID+ " integer primary key autoincrement, " +
10
+
11
+ UserContract.Users.COL_TITLE + " title," +
12
+
13
+ UserContract.Users.COL_CONTENT + " content, " +
14
+
15
+ UserContract.Users.COL_DATA + "data" +
16
+
17
+ ")";
18
+
19
+ ```
20
+
21
+
22
+
23
+ ```java
24
+
7
25
  E/SQLiteLog: (1) table users has no column named data
8
26
 
9
27
  04-11 07:06:51.366 19394-19394/com.example.android.sample.memo E/SQLiteDatabase: Error inserting data=android.support.v7.widget.AppCompatEditText@41932740 content=android.support.v7.widget.AppCompatEditText@41931730 title=android.support.v7.widget.AppCompatEditText@4192de48

1

コードの追加

2017/04/11 04:28

投稿

edoooooo
edoooooo

スコア478

test CHANGED
File without changes
test CHANGED
@@ -24,52 +24,366 @@
24
24
 
25
25
  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1475)
26
26
 
27
- at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1347)
27
+
28
-
29
- at com.example.android.sample.memo.EditActivity.onOptionsItemSelected(EditActivity.java:213)
30
-
31
- at android.app.Activity.onMenuItemSelected(Activity.java:2534)
32
-
33
- at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)
34
-
35
- at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
36
-
37
- at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113)
38
-
39
- at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:679)
40
-
41
- at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
42
-
43
- at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:156)
44
-
45
- at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:969)
46
-
47
- at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:959)
48
-
49
- at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:623)
50
-
51
- at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:154)
52
-
53
- at android.view.View.performClick(View.java:4147)
54
-
55
- at android.view.View$PerformClick.run(View.java:17161)
56
-
57
- at android.os.Handler.handleCallback(Handler.java:615)
58
-
59
- at android.os.Handler.dispatchMessage(Handler.java:92)
60
-
61
- at android.os.Looper.loop(Looper.java:213)
62
-
63
- at android.app.ActivityThread.main(ActivityThread.java:4786)
64
-
65
- at java.lang.reflect.Method.invokeNative(Native Method)
66
-
67
- at java.lang.reflect.Method.invoke(Method.java:511)
68
-
69
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
70
-
71
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
72
-
73
- at dalvik.system.NativeStart.main(Native Method)
74
28
 
75
29
  ```
30
+
31
+
32
+
33
+ //EditActivity
34
+
35
+ ```java
36
+
37
+
38
+
39
+ public class EditActivity extends AppCompatActivity {
40
+
41
+ // 保存ファイル名
42
+
43
+ String mFileName = "";
44
+
45
+ // 保存なしフラグ
46
+
47
+ boolean mNotSave = false;
48
+
49
+
50
+
51
+ @Override
52
+
53
+ protected void onCreate(Bundle savedInstanceState) {
54
+
55
+ super.onCreate(savedInstanceState);
56
+
57
+ setContentView(R.layout.activity_edit);
58
+
59
+
60
+
61
+ //open helper
62
+
63
+ //open db memoDBHelperに変更
64
+
65
+ MemoDBHelper memoDBHelper = new MemoDBHelper(this);
66
+
67
+ SQLiteDatabase db = memoDBHelper.getWritableDatabase();
68
+
69
+ //日時の下だから上のは、いらん
70
+
71
+
72
+
73
+ // タイトルと内容入力用の EditText を取得
74
+
75
+ EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle);
76
+
77
+ EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent);
78
+
79
+ //実行日の取得
80
+
81
+ EditText eTxtData = (EditText) findViewById(R.id.eTxtData);
82
+
83
+
84
+
85
+ Intent intent = getIntent();
86
+
87
+ //String name = intent.getStringExtra("NAME");
88
+
89
+ String insertk = intent.getStringExtra("INSERT");
90
+
91
+ if (insertk.length() != 0) {
92
+
93
+ //insertじゃないならば、それは、updateだからデータを取得
94
+
95
+
96
+
97
+ eTxtTitle.setText(intent.getStringExtra("TITLE"));
98
+
99
+ eTxtContent.setText(intent.getStringExtra("CONTENT"));
100
+
101
+ eTxtData.setText(intent.getStringExtra("DATA"));
102
+
103
+
104
+
105
+ } else {
106
+
107
+
108
+
109
+ Calendar calendar = Calendar.getInstance();
110
+
111
+ int month = calendar.get(Calendar.MONTH) + 1;
112
+
113
+ int day = calendar.get(Calendar.DATE);
114
+
115
+ eTxtData.setText(month + "月" + day + "日");
116
+
117
+ }
118
+
119
+ }
120
+
121
+
122
+
123
+
124
+
125
+ @Override
126
+
127
+ protected void onPause() {
128
+
129
+
130
+
131
+ super.onPause();
132
+
133
+
134
+
135
+
136
+
137
+ if (mNotSave) {
138
+
139
+ return;
140
+
141
+ }
142
+
143
+
144
+
145
+
146
+
147
+ }
148
+
149
+
150
+
151
+
152
+
153
+ // メニュー生成
154
+
155
+ @Override
156
+
157
+ public boolean onCreateOptionsMenu(Menu menu) {
158
+
159
+ getMenuInflater().inflate(R.menu.edit, menu);
160
+
161
+ return true;
162
+
163
+ }
164
+
165
+
166
+
167
+ // メニュー選択時の処理
168
+
169
+ @Override
170
+
171
+ public boolean onOptionsItemSelected(MenuItem item) {
172
+
173
+
174
+
175
+ //open helper
176
+
177
+ //open db memoDBHelperに変更
178
+
179
+ MemoDBHelper memoDBHelper = new MemoDBHelper(this);
180
+
181
+ SQLiteDatabase db = memoDBHelper.getWritableDatabase();
182
+
183
+
184
+
185
+
186
+
187
+ Cursor c = null;
188
+
189
+ String title = null;
190
+
191
+ String content = null;
192
+
193
+ String data = null;
194
+
195
+ EditText eTxtTitle = null;
196
+
197
+ EditText eTxtContent = null;
198
+
199
+ EditText eTxtData = null;
200
+
201
+
202
+
203
+ //ここのidにcancelとupdateを入れる
204
+
205
+ switch (item.getItemId()) {
206
+
207
+ case R.id.action_can:
208
+
209
+ //キャンセルが押された場合
210
+
211
+ mNotSave = true;
212
+
213
+ this.finish();
214
+
215
+ break;
216
+
217
+
218
+
219
+ case R.id.action_upd:
220
+
221
+
222
+
223
+ // タイトル、内容、実行日の追加
224
+
225
+ eTxtTitle = (EditText) findViewById(R.id.eTxtTitle);
226
+
227
+ eTxtContent = (EditText) findViewById(R.id.eTxtContent);
228
+
229
+ eTxtData = (EditText) findViewById(R.id.eTxtData);
230
+
231
+ title = eTxtTitle.getText().toString();
232
+
233
+ content = eTxtContent.getText().toString();
234
+
235
+ data = eTxtData.getText().toString();
236
+
237
+
238
+
239
+ // タイトル、内容が空白の場合、保存しない
240
+
241
+ Intent intent = getIntent();
242
+
243
+ //あえてinsertkに変更
244
+
245
+ String insertk = intent.getStringExtra("INSERT");
246
+
247
+ if (title.isEmpty() || content.isEmpty()) {
248
+
249
+ Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show();
250
+
251
+
252
+
253
+ }
254
+
255
+
256
+
257
+ if (insertk.length() == 0) {
258
+
259
+
260
+
261
+ try {
262
+
263
+ //書き換えをしていく
264
+
265
+ ContentValues newData = new ContentValues();
266
+
267
+ newData.put(UserContract.Users.COL_DATA, data);
268
+
269
+ int updateCount = db.update(
270
+
271
+ UserContract.Users.TABLE_NAME,
272
+
273
+ newData,
274
+
275
+ UserContract.Users.COL_TITLE + "= ?",
276
+
277
+ new String[]{title}
278
+
279
+ );
280
+
281
+
282
+
283
+
284
+
285
+ ContentValues newContent = new ContentValues();
286
+
287
+ newContent.put(UserContract.Users.COL_CONTENT, content);
288
+
289
+ int updateCount1 = db.update(
290
+
291
+ UserContract.Users.TABLE_NAME,
292
+
293
+ newContent,
294
+
295
+ UserContract.Users.COL_TITLE + "= ?",
296
+
297
+ new String[]{title}
298
+
299
+ );
300
+
301
+
302
+
303
+ ContentValues newTitle = new ContentValues();
304
+
305
+ newTitle.put(UserContract.Users.COL_TITLE, title);
306
+
307
+ int updateCount2 = db.update(
308
+
309
+ UserContract.Users.TABLE_NAME,
310
+
311
+ newTitle,
312
+
313
+ UserContract.Users.COL_TITLE + "= ?",
314
+
315
+ new String[]{title}
316
+
317
+ );
318
+
319
+
320
+
321
+ //保存に成功しました。
322
+
323
+ Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
324
+
325
+ } catch (Exception e) {
326
+
327
+ Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
328
+
329
+ }
330
+
331
+ //updateCount1とか2とかは、エラーのやつでしょ?
332
+
333
+ } else {
334
+
335
+
336
+
337
+ try {
338
+
339
+ //この下のinsertには、updateのように、textから取得したデータをinsertする
340
+
341
+
342
+
343
+ ContentValues newUser = new ContentValues();
344
+
345
+ newUser.put(UserContract.Users.COL_TITLE, eTxtTitle.toString());
346
+
347
+ newUser.put(UserContract.Users.COL_CONTENT, eTxtContent.toString());
348
+
349
+ newUser.put(UserContract.Users.COL_DATA, eTxtData.toString());
350
+
351
+ long newId = db.insert(UserContract.Users.TABLE_NAME,
352
+
353
+ null,
354
+
355
+ newUser
356
+
357
+ );
358
+
359
+ //close db
360
+
361
+
362
+
363
+
364
+
365
+ Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
366
+
367
+ } catch (Exception e) {
368
+
369
+ Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
370
+
371
+ }
372
+
373
+
374
+
375
+ }
376
+
377
+ db.close();
378
+
379
+ }
380
+
381
+ return super.onOptionsItemSelected(item);
382
+
383
+
384
+
385
+ }
386
+
387
+ }
388
+
389
+ ```