【问题标题】:Error while putting data into database in android在android中将数据放入数据库时​​出错
【发布时间】:2015-10-05 20:24:44
【问题描述】:

我正在创建一个需要登录的应用程序。我创建了主活动和登录活动。所以当我插入用户名和密码时,它应该保存到数据库中。 我在安装应用程序时遇到这些错误。

    10-05 23:12:18.959 18728-18728/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:12:18.959 18728-18728/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:16:45.809 18970-18970/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:16:45.809 18970-18970/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:26:21.659 31040-31040/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:26:21.659 31040-31040/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:28:34.489 31330-31330/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:28:34.489 31330-31330/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:45:53.309 31935-31935/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:45:53.309 31935-31935/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:48:01.659 32267-32267/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:48:01.659 32267-32267/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:56:57.979 32571-32571/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:24)
10-05 23:56:57.979 32571-32571/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:33)
10-05 23:58:57.249 451-451/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:58:57.249 451-451/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:02:41.189 898-898/com.example.shoaib.myapplication E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:02:41.189 898-898/com.example.shoaib.myapplication E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:04:54.439 1175-1175/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:04:54.439 1175-1175/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:05:57.279 1426-1426/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:05:57.279 1426-1426/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:07:16.629 1733-1733/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:07:16.629 1733-1733/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)

这个是DatabaseOperations.java文件

package com.example.shoaib.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by shoaib on 10/5/2015.
 */
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("Database Operations","Database Created");
    }

    @Override
    public void onCreate(SQLiteDatabase sdb) {
        sdb.execSQL(CREATE_QUERY);
        Log.d("Database Operations", "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 row inserted");
    }
}

【问题讨论】:

  • 实际的例外情况不在您的帖子中。我相信异常输出的某些部分丢失了。顺便说一句,您似乎没有从 PutInformation 调用 onCreate。所以我认为你不应该从这段代码中得到这样的异常
  • 那么我必须做出哪些改变?
  • @Adem 你的意思是说我没有调用 onCreate() 方法,但它会自动执行,因此不需要从 PutInformation() 调用它。
  • 如何保存“姓名”和“通行证”。请发布您如何创建 DatabaseOperations 以及如何调用 PutInformation
  • 您的异常似乎不完整。所以,我不明白出了什么问题。可能的原因,您可能会尝试多次打开同一个数据库。例如,您是否创建多个 DatabaseOperations 实例?不关闭上一个

标签: android


【解决方案1】:

如果您查看 logcat,您会看到异常名称和完整的堆栈跟踪:

Caused by: android.database.sqlite.SQLiteException: near ")": syntax error (code 1): , while compiling: CREATE TABLE table_name(username TEXT, pass TEXT, );

从查询中删除多余的最后一个逗号:

CREATE TABLE table_name(username TEXT, pass TEXT, );
//                                              ^ this one

【讨论】:

    【解决方案2】:

    创建表时,您必须添加列_id Integer primary key

    【讨论】:

    • 其实你没有。你应该这样做,因为使用 CursorAdapter 会更容易,但这不是必需的。
    猜你喜欢
    • 2014-03-02
    • 2019-03-04
    • 2019-08-21
    • 1970-01-01
    • 2016-06-06
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多