下のエラーのようにtable usersはdataというcolumnを持っていません。と出るのですが、どうすれば良いのでしょうか?
あどば
java
1 "create table " + UserContract.Users.TABLE_NAME + "(" + 2 UserContract.Users._ID+ " integer primary key autoincrement, " + 3 UserContract.Users.COL_TITLE + " title," + 4 UserContract.Users.COL_CONTENT + " content, " + 5 UserContract.Users.COL_DATA + "data" + 6 ")";
java
1E/SQLiteLog: (1) table users has no column named data 204-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 3 android.database.sqlite.SQLiteException: table users has no column named data (code 1): , while compiling: INSERT INTO users(data,content,title) VALUES (?,?,?) 4 at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 5 at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893) 6 at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:504) 7 at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 8 at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 9 at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 10 at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1475) 11
//EditActivity
java
1 2public class EditActivity extends AppCompatActivity { 3 // 保存ファイル名 4 String mFileName = ""; 5 // 保存なしフラグ 6 boolean mNotSave = false; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_edit); 12 13 //open helper 14 //open db memoDBHelperに変更 15 MemoDBHelper memoDBHelper = new MemoDBHelper(this); 16 SQLiteDatabase db = memoDBHelper.getWritableDatabase(); 17 //日時の下だから上のは、いらん 18 19 // タイトルと内容入力用の EditText を取得 20 EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); 21 EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent); 22 //実行日の取得 23 EditText eTxtData = (EditText) findViewById(R.id.eTxtData); 24 25 Intent intent = getIntent(); 26 //String name = intent.getStringExtra("NAME"); 27 String insertk = intent.getStringExtra("INSERT"); 28 if (insertk.length() != 0) { 29 //insertじゃないならば、それは、updateだからデータを取得 30 31 eTxtTitle.setText(intent.getStringExtra("TITLE")); 32 eTxtContent.setText(intent.getStringExtra("CONTENT")); 33 eTxtData.setText(intent.getStringExtra("DATA")); 34 35 } else { 36 37 Calendar calendar = Calendar.getInstance(); 38 int month = calendar.get(Calendar.MONTH) + 1; 39 int day = calendar.get(Calendar.DATE); 40 eTxtData.setText(month + "月" + day + "日"); 41 } 42 } 43 44 45 @Override 46 protected void onPause() { 47 48 super.onPause(); 49 50 51 if (mNotSave) { 52 return; 53 } 54 55 56 } 57 58 59 // メニュー生成 60 @Override 61 public boolean onCreateOptionsMenu(Menu menu) { 62 getMenuInflater().inflate(R.menu.edit, menu); 63 return true; 64 } 65 66 // メニュー選択時の処理 67 @Override 68 public boolean onOptionsItemSelected(MenuItem item) { 69 70 //open helper 71 //open db memoDBHelperに変更 72 MemoDBHelper memoDBHelper = new MemoDBHelper(this); 73 SQLiteDatabase db = memoDBHelper.getWritableDatabase(); 74 75 76 Cursor c = null; 77 String title = null; 78 String content = null; 79 String data = null; 80 EditText eTxtTitle = null; 81 EditText eTxtContent = null; 82 EditText eTxtData = null; 83 84 //ここのidにcancelとupdateを入れる 85 switch (item.getItemId()) { 86 case R.id.action_can: 87 //キャンセルが押された場合 88 mNotSave = true; 89 this.finish(); 90 break; 91 92 case R.id.action_upd: 93 94 // タイトル、内容、実行日の追加 95 eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); 96 eTxtContent = (EditText) findViewById(R.id.eTxtContent); 97 eTxtData = (EditText) findViewById(R.id.eTxtData); 98 title = eTxtTitle.getText().toString(); 99 content = eTxtContent.getText().toString(); 100 data = eTxtData.getText().toString(); 101 102 // タイトル、内容が空白の場合、保存しない 103 Intent intent = getIntent(); 104 //あえてinsertkに変更 105 String insertk = intent.getStringExtra("INSERT"); 106 if (title.isEmpty() || content.isEmpty()) { 107 Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show(); 108 109 } 110 111 if (insertk.length() == 0) { 112 113 try { 114 //書き換えをしていく 115 ContentValues newData = new ContentValues(); 116 newData.put(UserContract.Users.COL_DATA, data); 117 int updateCount = db.update( 118 UserContract.Users.TABLE_NAME, 119 newData, 120 UserContract.Users.COL_TITLE + "= ?", 121 new String[]{title} 122 ); 123 124 125 ContentValues newContent = new ContentValues(); 126 newContent.put(UserContract.Users.COL_CONTENT, content); 127 int updateCount1 = db.update( 128 UserContract.Users.TABLE_NAME, 129 newContent, 130 UserContract.Users.COL_TITLE + "= ?", 131 new String[]{title} 132 ); 133 134 ContentValues newTitle = new ContentValues(); 135 newTitle.put(UserContract.Users.COL_TITLE, title); 136 int updateCount2 = db.update( 137 UserContract.Users.TABLE_NAME, 138 newTitle, 139 UserContract.Users.COL_TITLE + "= ?", 140 new String[]{title} 141 ); 142 143 //保存に成功しました。 144 Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); 145 } catch (Exception e) { 146 Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); 147 } 148 //updateCount1とか2とかは、エラーのやつでしょ? 149 } else { 150 151 try { 152 //この下のinsertには、updateのように、textから取得したデータをinsertする 153 154 ContentValues newUser = new ContentValues(); 155 newUser.put(UserContract.Users.COL_TITLE, eTxtTitle.toString()); 156 newUser.put(UserContract.Users.COL_CONTENT, eTxtContent.toString()); 157 newUser.put(UserContract.Users.COL_DATA, eTxtData.toString()); 158 long newId = db.insert(UserContract.Users.TABLE_NAME, 159 null, 160 newUser 161 ); 162 //close db 163 164 165 Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); 166 } catch (Exception e) { 167 Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); 168 } 169 170 } 171 db.close(); 172 } 173 return super.onOptionsItemSelected(item); 174 175 } 176}

回答3件
あなたの回答
tips
プレビュー