下のエラーのようにtable usersはdataというcolumnを持っていません。と出るのですが、どうすれば良いのでしょうか?
あどば
java
"create table " + UserContract.Users.TABLE_NAME + "(" + UserContract.Users._ID+ " integer primary key autoincrement, " + UserContract.Users.COL_TITLE + " title," + UserContract.Users.COL_CONTENT + " content, " + UserContract.Users.COL_DATA + "data" + ")";
java
E/SQLiteLog: (1) table users has no column named data 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 android.database.sqlite.SQLiteException: table users has no column named data (code 1): , while compiling: INSERT INTO users(data,content,title) VALUES (?,?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:504) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1475)
//EditActivity
java
public class EditActivity extends AppCompatActivity { // 保存ファイル名 String mFileName = ""; // 保存なしフラグ boolean mNotSave = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit); //open helper //open db memoDBHelperに変更 MemoDBHelper memoDBHelper = new MemoDBHelper(this); SQLiteDatabase db = memoDBHelper.getWritableDatabase(); //日時の下だから上のは、いらん // タイトルと内容入力用の EditText を取得 EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent); //実行日の取得 EditText eTxtData = (EditText) findViewById(R.id.eTxtData); Intent intent = getIntent(); //String name = intent.getStringExtra("NAME"); String insertk = intent.getStringExtra("INSERT"); if (insertk.length() != 0) { //insertじゃないならば、それは、updateだからデータを取得 eTxtTitle.setText(intent.getStringExtra("TITLE")); eTxtContent.setText(intent.getStringExtra("CONTENT")); eTxtData.setText(intent.getStringExtra("DATA")); } else { Calendar calendar = Calendar.getInstance(); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DATE); eTxtData.setText(month + "月" + day + "日"); } } @Override protected void onPause() { super.onPause(); if (mNotSave) { return; } } // メニュー生成 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.edit, menu); return true; } // メニュー選択時の処理 @Override public boolean onOptionsItemSelected(MenuItem item) { //open helper //open db memoDBHelperに変更 MemoDBHelper memoDBHelper = new MemoDBHelper(this); SQLiteDatabase db = memoDBHelper.getWritableDatabase(); Cursor c = null; String title = null; String content = null; String data = null; EditText eTxtTitle = null; EditText eTxtContent = null; EditText eTxtData = null; //ここのidにcancelとupdateを入れる switch (item.getItemId()) { case R.id.action_can: //キャンセルが押された場合 mNotSave = true; this.finish(); break; case R.id.action_upd: // タイトル、内容、実行日の追加 eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); eTxtContent = (EditText) findViewById(R.id.eTxtContent); eTxtData = (EditText) findViewById(R.id.eTxtData); title = eTxtTitle.getText().toString(); content = eTxtContent.getText().toString(); data = eTxtData.getText().toString(); // タイトル、内容が空白の場合、保存しない Intent intent = getIntent(); //あえてinsertkに変更 String insertk = intent.getStringExtra("INSERT"); if (title.isEmpty() || content.isEmpty()) { Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show(); } if (insertk.length() == 0) { try { //書き換えをしていく ContentValues newData = new ContentValues(); newData.put(UserContract.Users.COL_DATA, data); int updateCount = db.update( UserContract.Users.TABLE_NAME, newData, UserContract.Users.COL_TITLE + "= ?", new String[]{title} ); ContentValues newContent = new ContentValues(); newContent.put(UserContract.Users.COL_CONTENT, content); int updateCount1 = db.update( UserContract.Users.TABLE_NAME, newContent, UserContract.Users.COL_TITLE + "= ?", new String[]{title} ); ContentValues newTitle = new ContentValues(); newTitle.put(UserContract.Users.COL_TITLE, title); int updateCount2 = db.update( UserContract.Users.TABLE_NAME, newTitle, UserContract.Users.COL_TITLE + "= ?", new String[]{title} ); //保存に成功しました。 Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); } //updateCount1とか2とかは、エラーのやつでしょ? } else { try { //この下のinsertには、updateのように、textから取得したデータをinsertする ContentValues newUser = new ContentValues(); newUser.put(UserContract.Users.COL_TITLE, eTxtTitle.toString()); newUser.put(UserContract.Users.COL_CONTENT, eTxtContent.toString()); newUser.put(UserContract.Users.COL_DATA, eTxtData.toString()); long newId = db.insert(UserContract.Users.TABLE_NAME, null, newUser ); //close db Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); } } db.close(); } return super.onOptionsItemSelected(item); } }
まだ回答がついていません
会員登録して回答してみよう