java - 在android中的SQLite数据库中保存用户名和密码的程序

标签 java android sqlite

在android中的SQLite数据库中保存用户名和密码的程序,但是当我单击注册按钮时,程序不幸关闭

注册 Activity

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 注册

<?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";
    }
}

数据库操作

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)

最佳答案

问题是语法错误。我编辑您的 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");
    }
}

关于java - 在android中的SQLite数据库中保存用户名和密码的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38676351/

相关文章:

java - 从文本字段获取用户输入并将其添加到 GUI 列表中显示的数组列表中

android - Android Studio 中的模拟器无法启动

android - 防止从android中最近的应用程序列表运行 Activity

java - 为什么此构造函数中不需要 "this."命令? ( java )

java - 读取 URL 编码参数 PHP

java - 无法在 Canvas 中颠倒绘制文本

python - SQLite3 - Executemany 未完成 Python3 中大型列表的更新

mysql - SQL 选择值不匹配的地方

python - 使用python在sqlite select查询中动态搜索null

java - 列表页面 RecyclerView 无限滚动在放入 NestedScrollView 时不起作用