Android 正在尝试创建注册表并将值插入数据库
我试图为调查申请创建带有3个字段的Android 正在尝试创建注册表并将值插入数据库,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我试图为调查申请创建带有3个字段的登记表。有性别,年龄组,手机。我使用放射组活动进行性别选择。我使用微调器活动进行年龄组选择 按下register按钮时,所有详细信息都将存储在SQLite数据库中。但它没有被插入。显示错误 RegistrationForm.xml <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android
登记表
。有性别,年龄组,手机。我使用放射组活动进行性别选择。我使用微调器活动进行年龄组选择
按下register按钮时,所有详细信息都将存储在SQLite数据库中。但它没有被插入。显示错误
RegistrationForm.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="446dp"
android:padding="10dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/hello" />
<RadioGroup
android:id="@+id/Gender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginRight="64dp"
android:layout_marginTop="15dp" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/radioGroup1"
android:layout_centerHorizontal="true"
android:checked="true"
android:text="@string/male" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radio0"
android:layout_below="@+id/radio0"
android:text="@string/female" />
</RadioGroup>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_toLeftOf="@+id/Gender"
android:ems="10"
android:text="@string/gender" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/spinner1"
android:layout_alignLeft="@+id/spinner1"
android:ems="10" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/spinner1"
android:layout_alignLeft="@+id/spinner1"
android:ems="10" />
<EditText
android:id="@+id/editText6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/spinner1"
android:layout_alignParentRight="true"
android:layout_below="@+id/Gender"
android:ems="10"
android:text="@string/age_category" />
<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText6"
android:layout_alignTop="@+id/editText2"
android:layout_toLeftOf="@+id/Gender"
android:ems="10" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText6"
android:layout_marginTop="14dp" />
<EditText
android:id="@+id/mobile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/spinner1"
android:layout_below="@+id/spinner1"
android:layout_marginTop="15dp"
android:ems="10"
android:hint="Mobile"
android:inputType="phone" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/mobile"
android:layout_alignParentRight="true"
android:layout_below="@+id/mobile"
android:layout_marginTop="22dp"
android:text="@string/register" />
</RelativeLayout>
</ScrollView>
这是提供数据库连接的数据库适配器
package com.example.surveyapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHelper extends SQLiteOpenHelper
{
public DataBaseHelper(Context context, String name,CursorFactory factory, int version)
{
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) `enter code here`
{
db.execSQL(UserAdapter.TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + "TEMPLATE");
// Create a new one.
onCreate(db);
}
}
UserAdapter.java
this class is used to get table access
package com.example.surveyapplication;
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class UserAdapter {
static final String DATABASE_NAME = "survey.db";
static final int DATABASE_VERSION = 1;
public static final int NAME_COLUMN = 1;
// TODO: Create public field for each column in your table.
// SQL Statement to create a new database.
static final String TABLE_CREATE = "create table "+"USER"+
"( " +"ID"+" integer primary key autoincrement,"+ "GENDER text,AGEGROUP text,MOBILE text); ";
// Variable to hold the database instance
public SQLiteDatabase db;
// Context of the application using the database.
private final Context context;
// Database open/upgrade helper
private DataBaseHelper dbHelper;
public UserAdapter(Context _context)
{
context = _context;
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public UserAdapter open() throws SQLException
{
db = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
db.close();
}
public SQLiteDatabase getDatabaseInstance()
{
return db;
}
public void insertEntry(String gender,String ageGroup,String mobile)
{
ContentValues newValues = new ContentValues();
// Assign values for each row.
newValues.put("GENDER", gender);
newValues.put("AGEGROUP",ageGroup);
newValues.put("MOBILE",mobile);
// Insert the row into your table
db.insert("USER", null, newValues);
///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
}
}
你能发布错误日志吗?你能发布日志中显示的错误吗?06-20 13:20:03.974:W/dalvikvm(779):threadid=1:线程退出时出现未捕获异常(group=0x40a71930)06-20 13:20:04.014:E/AndroidRuntime(779):致命异常:main 06-20 13:20:04.014:E/AndroidRuntime(779):java.lang.NullPointerException 06-20 13:20:04.014:E/AndroidRuntime(779):在com.example.surveyapplication.MainActivity$1.onClick(MainActivity.java:75)06-20 13:20:04.014:E/AndroidRuntime(779):在android.view.view.performClick(view.java:4204)06-20 13:20:04.014:E/AndroidRuntime(779):在android.view.view.view.view$performClick.run(view.java:17355)06-20 13:20:04.014:E/AndroidRuntime(779):在android.os.Handler.handleCallback(Handler.java:725)06-20 13:20:04.014:E/AndroidRuntime(779):在android.os.Handler.dispatchMessage(Handler.java:92)06-20 13:20:04.014:E/AndroidRuntime(779):在android.os.Looper.Looper.loop(Looper.java:137)06-20 13:20:04.014:E/andrountime(779):在android.app.ActivityThread.main(ActivityThread.java:5041)06-20 13:20:04.014:E/AndroidRuntime(779):atjava.lang.reflect.Method.invokenactive(本机方法)06-20 13:20:04.014:E/AndroidRuntime(779):在java.lang.reflect.Method.invoke(Method.java:511)06-20 13:20:04.014:E/AndroidRuntime(779):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)06-20 13:20:04.014:E/AndroidRuntime(779):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)06-20 13:20:04.014:E/AndroidRuntime(779):在dalvik.system.NativeStart.main(本机方法)06-20 13:20:20:08.533:I/Process(779):发送信号。PID:779信号:9
package com.example.surveyapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHelper extends SQLiteOpenHelper
{
public DataBaseHelper(Context context, String name,CursorFactory factory, int version)
{
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) `enter code here`
{
db.execSQL(UserAdapter.TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + "TEMPLATE");
// Create a new one.
onCreate(db);
}
}
UserAdapter.java
this class is used to get table access
package com.example.surveyapplication;
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class UserAdapter {
static final String DATABASE_NAME = "survey.db";
static final int DATABASE_VERSION = 1;
public static final int NAME_COLUMN = 1;
// TODO: Create public field for each column in your table.
// SQL Statement to create a new database.
static final String TABLE_CREATE = "create table "+"USER"+
"( " +"ID"+" integer primary key autoincrement,"+ "GENDER text,AGEGROUP text,MOBILE text); ";
// Variable to hold the database instance
public SQLiteDatabase db;
// Context of the application using the database.
private final Context context;
// Database open/upgrade helper
private DataBaseHelper dbHelper;
public UserAdapter(Context _context)
{
context = _context;
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public UserAdapter open() throws SQLException
{
db = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
db.close();
}
public SQLiteDatabase getDatabaseInstance()
{
return db;
}
public void insertEntry(String gender,String ageGroup,String mobile)
{
ContentValues newValues = new ContentValues();
// Assign values for each row.
newValues.put("GENDER", gender);
newValues.put("AGEGROUP",ageGroup);
newValues.put("MOBILE",mobile);
// Insert the row into your table
db.insert("USER", null, newValues);
///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
}
}