【发布时间】:2019-02-23 06:17:59
【问题描述】:
这是 DatabaseHelper.java 类,在这个类中我为 SQLite 数据库编写查询。我认为查询没有任何问题。
package com.example.ankurnamikaze.myapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import static android.R.attr.id;
import static android.R.attr.name;
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase db;
public static final String DATABASE_NAME = "notes_db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "notes";
public static final String COL_ID = "id";
public static final String COL_NAME = "name";
public static final String COL_PASS = "pass";
此方法用于创建数据库。
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (" +COL_ID + " integer autoincrement," + COL_NAME + " text," + COL_PASS+ " text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + TABLE_NAME);
onCreate(db);
}
// INSERTING ROW IN DATABASE
public void insertData(int id, String name, String pass){
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COL_ID, id);
values.put(COL_NAME, name);
values.put(COL_PASS, pass);
db.insert(TABLE_NAME, null, values);
}
}
这是 MainActivity.java 类。我认为我在定义 DatabaseHelper 类时遇到了问题,因为在我在 onCreate 方法之外定义它之前,它会使应用程序崩溃,然后我看到一些代码告诉我在 onCreate 方法中定义它,但它仍然对我不起作用。
package com.example.ankurnamikaze.myapp;
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;
import static android.R.attr.id;
import static android.icu.lang.UCharacter.GraphemeClusterBreak.T;
public class MainActivity extends AppCompatActivity {
DatabaseHelper databaseHelper;
EditText name, password;
String user_name, user_pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
databaseHelper = new DatabaseHelper(this);
setContentView(R.layout.activity_main);
name = (EditText)findViewById(R.id.user_name);
password = (EditText)findViewById(R.id.user_pass);
user_name = String.valueOf(name.getText());
user_pass = String.valueOf(password.getText());
databaseHelper.insertData(id, user_name, user_pass);
}
}
这是activiy_main.xml,我在其中创建属性。而且我认为这不是问题的根源。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.ankurnamikaze.myapp.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="USERNAME"
android:id="@+id/user_name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="PASSWORD"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="sumbit"
android:id="@+id/button" />
</LinearLayout>
【问题讨论】:
-
你的问题是什么?
-
你遇到了什么错误?
-
它到底是怎么不运行的?它不会编译,还是崩溃,还是什么?
-
要不要加上android studio给出的编译行?
标签: java android xml sqlite sqliteopenhelper