2017-10-18 15 views
-1

MainActvityに4つのボタンがあります。 Add Buttonをクリックすると、AddDataクラスが開きます。ここでは、氏名、電話番号、メールアドレスを入力する必要があります。 AddDataクラスの
保存ボタンをクリックすると、「データが挿入されていません」というメッセージが表示されます。SQLiteDatabase内にデータが挿入されない理由

私の文法には申し訳ありません。コメントから

MainActivity.java

package csitmnr.sqlitedatabaseexample; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 
    Button search,add,delete,update; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    search = (Button) findViewById(R.id.btnSearch); 
    add = (Button) findViewById(R.id.btnAdd); 
    delete = (Button) findViewById(R.id.btnDelete); 
    update = (Button) findViewById(R.id.btnUpdate); 

    add.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(MainActivity.this,AddData.class); 
      startActivity(intent); 
     } 
    }); 
} 
} 

DBHelper.java

package csitmnr.sqlitedatabaseexample; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 



public class DBHelper extends SQLiteOpenHelper { 

    private static final String DATABASE_NAME = "contacts.db"; 
    private static final String TABLE_NAME = "contacts"; 

    public DBHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 


    } 

@Override 
public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    sqLiteDatabase.execSQL("CREATE TABLE "+TABLE_NAME+"(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,PHONE_NO TEXT,EMAIL TEXT)"); 


} 

@Override 
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 
    sqLiteDatabase.execSQL("DROP TABLE IF EXIST "+TABLE_NAME); 
    onCreate(sqLiteDatabase); 
} 

public boolean insertData(String name,String phone_no,String email){ 

    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 

    ContentValues contentValues = new ContentValues(); 

    contentValues.put("NAME",name); 
    contentValues.put("PHONE_NO",phone_no); 
    contentValues.put("EMAIL",email); 

    long result = sqLiteDatabase.insert(TABLE_NAME,null,contentValues); 

    if (result == -1) 
     return false; 
    else 
     return true; 


} 
} 

AddData.java

package csitmnr.sqlitedatabaseexample; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class AddData extends AppCompatActivity { 
    EditText name , phone, email; 
    Button save; 
    private DBHelper dbHelper; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_data); 

    dbHelper = new DBHelper(this); 

    name = (EditText) findViewById(R.id.etName); 
    phone = (EditText) findViewById(R.id.etPhone); 
    email = (EditText) findViewById(R.id.etEmail); 
    save = (Button) findViewById(R.id.saveButton); 


    save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      boolean result = dbHelper.insertData(name.getText().toString(),phone.getText().toString(),email.getText().toString()); 
       if (result){ 
        Toast.makeText(AddData.this, "Data is inserted", Toast.LENGTH_SHORT).show(); 
       }else { 
        Toast.makeText(AddData.this, "Data is not inserted", Toast.LENGTH_SHORT).show(); 
       } 
     } 
    }); 
} 
} 
+1

https://developer.android.com/reference/an droid/database/sqlite/SQLiteDatabase.html#insertOrThrow(java.lang.String、java.lang.String、android.content.ContentValues) –

+0

申し訳ありませんが動作しません。 –

+0

どういう意味ですか? –

答えて

0

あなたのアプリはすでにテーブルが作成されているので、最初に のデータをクリアして、もう一度アプリを実行してみてください。 - Jerrol 1分前

アップグレード時に古いテーブルを廃棄しているので、簡単な解決策です。テーブルバージョンを増やしてみてください。

問題の原因は、あなたがその可能な解決策があり、バージョン番号を増加させることなく、データベースの形式を変更したことになります:

  • バージョン番号を増やし、(ONUPGRADEを実装する)適切
  • 再インストールアプリ(と仮定すると非永続ストレージ)
  • クリアアプリデータ `insertOrThrow`を使用することについてあなたはエラーが何であるかを見てどのよう
+0

最初の文字は、その部分にスペースは必要ありません。 – Enzokie

+0

私はしますが、それは仕事ではありません。 –

+1

@ManojBudhaAyerあなたのアプリはすでにテーブルが作成されているので、データをクリアしてからアプリを再実行してみてください。 – Jerrol

関連する問題