質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

解決済

table users has no column named dataと出ます。

edoooooo
edoooooo

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

3回答

1評価

0クリップ

7192閲覧

投稿2017/04/11 04:00

編集2017/04/11 04:28

下のエラーのように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); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

akabee

2017/04/11 04:07

そのエラーの通り、usersテーブルにdataという列がないのでは?確実にあるということを確認されているということですか?接続先を誤ったりしていませんか?
edoooooo

2017/04/11 04:12 編集

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 のようにinsertしており、 CREATE_TABLE= "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" + ")";   このようにテーブルを作っています。 public static final String COL_DATA="data"; そして、このように定義しているので、確実にあるとは思っているのですが、接続先をもう一度見てみます。
edoooooo

2017/04/11 04:40 編集

申し訳ありません。以前のアドバイスでは、createの際にスペースがないためにエラーとなっている、という指摘をうけ、修正し、その後createはいじった記憶がなかったのですが、また同じミスをしていたようです。なおしてみます。
SVC34

2017/04/11 04:41 編集

「一度CREATE_TABLE、INIT_TABLE、DROP_TABLEの中身を出力してSQL構文が合っているか確認された方がいいと思います。」 「データ型の指定がおかしいです」
edoooooo

2017/04/11 04:41

ありがとうございます。ログで出力します。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。