程序在android中的SQLite数据库中保存用户名和密码但是当我点击注册按钮时程序关闭不幸
RegisterActivity
package com.example.mina.sqlite;
import android.content.Context;
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 RegisterActivity extends AppCompatActivity {
EditText editText,editText2,editText3;
String username,userpass,conpass;
Button button;
Context ctx=this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
editText=(EditText)findViewById(R.id.editText3);
editText2=(EditText)findViewById(R.id.editText4);
editText3=(EditText)findViewById(R.id.editText5);
button=(Button)findViewById(R.id.button6);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
username=editText.getText().toString();
userpass=editText2.getText().toString();
conpass=editText3.getText().toString();
if (!(userpass.equals(conpass))){
Toast.makeText(getBaseContext(),"password not matching",Toast.LENGTH_LONG).show();
editText.setText("");
editText2.setText("");
editText3.setText("");
finish();
}
else {
DatabaseOperations dp=new DatabaseOperations(ctx);
dp.putInformation(dp,username,userpass);
Toast.makeText(getBaseContext(),"registration succesfull",Toast.LENGTH_LONG).show();
finish();
}
}
});
}
}
activity_register
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mina.sqlite.RegisterActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:hint="enter ur name"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText4"
android:hint="enter ur password"
android:inputType="textPassword"
android:layout_below="@+id/editText3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText5"
android:hint="enter ur confirm password"
android:inputType="textPassword"
android:layout_below="@+id/editText4"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register"
android:id="@+id/button6"
android:layout_below="@+id/editText5"
android:layout_centerHorizontal="true"
android:layout_marginTop="121dp" />
</RelativeLayout>
TableData.java
package com.example.mina.sqlite;
import android.provider.BaseColumns;
/**
* Created by Mina on 7/28/2016.
*/
public class TableData {
public TableData(){
}
public static abstract class TableInfo implements BaseColumns{
public static final String User_Name="user_name";
public static final String User_Pass="user_pass";
public static final String Database_name="user_info";
public static final String Table_name="reg_info";
}
}
DatabaseOperations
package com.example.mina.sqlite;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.EditText;
/**
* Created by Mina on 7/28/2016.
*/
public class DatabaseOperations extends SQLiteOpenHelper {
public static final int database_version=1;
public String CREATE_QUERY="CREATE TABLE "+ TableData.TableInfo.Table_name+"("+ TableData.TableInfo.User_Name +" TEXT," + TableData.TableInfo.User_Pass + " TEXT);";
public DatabaseOperations(Context context) {
super(context, TableData.TableInfo.Database_name, null, database_version);
Log.d("DatabaseOperstions","Database created");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_QUERY);
Log.d("DatabaseOperations","Table created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void putInformation(DatabaseOperations dop, String name, String pass){
SQLiteDatabase sq=dop.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(TableData.TableInfo.User_Name,name);
cv.put(TableData.TableInfo.User_Pass,pass);
Long k=sq.insert(TableData.TableInfo.Table_name,null,cv);
Log.d("Database operations","one raw inserted");
}
}
MainActivity.java
package com.example.mina.sqlite;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void Login(View view){
Intent i=new Intent(MainActivity.this,LoginActivity.class);
startActivity(i);
}
public void Register(View view){
Intent i=new Intent(MainActivity.this,RegisterActivity.class);
startActivity(i);
}
public void Update(View view){
Intent i=new Intent(MainActivity.this,UpdateActivity.class);
startActivity(i);
}
public void Delete(View view){
Intent i=new Intent(MainActivity.this,DeleteActivity.class);
startActivity(i);
}
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mina.sqlite.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="login"
android:onClick="Login"
android:paddingLeft="150dp"
android:paddingRight="150dp"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="register"
android:onClick="Register"
android:paddingRight="150dp"
android:paddingLeft="150dp"
android:textSize="11dp"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="update info"
android:onClick="Update"
android:paddingLeft="150dp"
android:paddingRight="150dp"
android:textAlignment="center"
android:textSize="8dp"
android:textStyle="bold"
android:id="@+id/button3"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="delete user"
android:onClick="Delete"
android:paddingLeft="150dp"
android:paddingRight="150dp"
android:id="@+id/button4"
android:textSize="6dp"
android:layout_below="@+id/button3"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp" />
</RelativeLayout>
Logcat错误
07-30 16:28:47.766 1110-1110/com.example.mina.sqlite E/AndroidRuntime: FATAL EXCEPTION: main
android.database.sqlite.SQLiteException: near "TABLEreg_info": syntax error (code 1): , while compiling: CREATE TABLEreg_info(user_name TEXTuser_pass TEXT);
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
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.executeSql(SQLiteDatabase.java:1663)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
at com.example.mina.sqlite.DatabaseOperations.onCreate(DatabaseOperations.java:23)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
at com.example.mina.sqlite.DatabaseOperations.putInformation(DatabaseOperations.java:33)
at com.example.mina.sqlite.RegisterActivity$1.onClick(RegisterActivity.java:39)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
问题是语法错误。我编辑了CREATE_QUERY
SQL查询。小心空格
DatabaseOperations.java
如下所示
public class DatabaseOperations extends SQLiteOpenHelper {
public static final int database_version=1;
public String CREATE_QUERY =
"CREATE TABLE " +
TableData.TableInfo.Table_name + " (" +
TableData.TableInfo.User_Name + " TEXT," +
TableData.TableInfo.User_Pass + " TEXT );";
public DatabaseOperations(Context context) {
super(context, TableData.TableInfo.Database_name, null, database_version);
Log.d("DatabaseOperstions","Database created");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_QUERY);
Log.d("DatabaseOperations","Table created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void putInformation(DatabaseOperations dop, String name, String pass){
SQLiteDatabase sq=dop.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(TableData.TableInfo.User_Name,name);
cv.put(TableData.TableInfo.User_Pass,pass);
Long k=sq.insert(TableData.TableInfo.Table_name,null,cv);
Log.d("Database operations","one raw inserted");
}
}