Android Studio无法将数据插入sqlitedatabase

时间:2017-05-04 18:42:52

标签: java android database sqlite android-sqlite

我正在为我的移动应用主题做一个小项目。我需要将它与sqlitedatabase链接。

我一直是Youtube的教程,我一步一步地按照教程进行操作。我没有从代码中得到任何错误。

我需要将值插入数据库并显示回来,但是用户输入没有插入到数据库中,因此我无法显示数据库中的数据。

我希望有人可以帮助我。我因为这个问题而被困2天,没有错误显示。

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper
{
    public static final String DATABASE_NAME = "STUDENT.DB";

    //create table
    public static final String TABLE_STUDENT = "STUDENT_TABLE";
    public static final String COL_STD_ID = "STD_ID";
    public static final String COL_STD_NAME = "STD_NAME";
    public static final String COL_STD_EMAIL = "STD_EMAIL";
    public static final String COL_STD_ADDRESS = "STD_ADDRESS";

    public DatabaseHelper(Context context) {
        super(context,DATABASE_NAME, null, 1);
        Log.e("DATABASE OPERATION","Database created/opend...");

    }

    @Override
    public void onCreate(SQLiteDatabase db) {    
        db.execSQL("CREATE TABLE " + TABLE_STUDENT +" (STD_ID INTEGER PRIMARY KEY AUTOINCREMENT,STD_NAME TEXT,STD_EMAIL TEXT, STD_ADDRESS TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+ TABLE_STUDENT );
        onCreate(db);
    }

    public boolean insertData(String STD_NAME, String STD_EMAIL, String STD_ADDRESS)
    {
        SQLiteDatabase db = this.getWritableDatabase();

        //get the data from user into db
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_STD_NAME,STD_NAME);
        contentValues.put(COL_STD_EMAIL,STD_EMAIL);
        contentValues.put(COL_STD_ADDRESS,STD_ADDRESS);


        //SEE WHETHER THE DATA INSERT INTO DB OR NOT
        //IF RETURN -1, DATA NOT SUCCESSFUL INSERTED
        long result = db.insert(TABLE_STUDENT,null,contentValues);
        if (result == -1)
            return false;
        else
            return true;
    }

    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase();

        Cursor result = db.rawQuery("SELECT * FROM "  + TABLE_STUDENT,null);
        return result;
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity {
    DatabaseHelper myDB;
    EditText etstdName, etstdEmail, etstdAddress;
    Button btnInsertData, btnViewData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDB = new DatabaseHelper(this);

        etstdName = (EditText)findViewById(R.id.etstdName);
        etstdEmail = (EditText)findViewById(R.id.etstdEmail);
        etstdAddress = (EditText)findViewById(R.id.etstdEmail);

        btnViewData = (Button)findViewById(R.id.btnViewData);
        btnInsertData = (Button)findViewById(R.id.btnInsertData);

        InsertStdData();
    }

    // I think i get stuck at here but theres not error display at InsertStdData() methid

    public void InsertStdData() {
        btnInsertData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean isInserted =   myDB.insertData(etstdName.getText().toString(),
                                       etstdEmail.getText().toString(),
                                       etstdAddress.getText().toString());

                if(isInserted = true)
                    Toast.makeText(MainActivity.this,"Data successfully inserted.",Toast.LENGTH_LONG).show();
                else
                    Toast.makeText(MainActivity.this,"Data not successfully inserted.",Toast.LENGTH_LONG).show();
            }
        });
    }

    public void viewStdData(View view) {
        Cursor result = myDB.getAllData();
        if(result.getCount() == 0) {
            //showmessage method
            showMessage("ERROR", "NO DATA FOUND");
            return;
        }

        StringBuffer buffer = new StringBuffer();
        while (result.moveToNext()){
            buffer.append("STD_ID : "+result.getString(0)+"\n");
            buffer.append("STD_NAME : "+result.getString(1)+"\n");
            buffer.append("STD_EMAIL : "+result.getString(2)+"\n");
            buffer.append("STD_ADDRESS :"+result.getString(3)+"\n\n");
        }
        //show all data
        showMessage("DATA",buffer.toString());
    }

    public void showMessage(String title, String Message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(Message);
        builder.show();
    }
}

1 个答案:

答案 0 :(得分:0)

您调用了InsertStdData(),但未在MainActivity中调用viewStdData(View视图)。