简体   繁体   English

如何在Android中插入新的SQLite表行?

[英]How to insert a new row of table of sqlite in android?

I am working on a attendance apps for teacher. 我正在为老师开发出勤应用程序。 I have created database and trying to insert a new row but I am getting errors.I am giving few necessary code below. 我已经创建了数据库并尝试插入新行,但出现错误。我在下面提供了一些必要的代码。 Database creation is as: 数据库创建如下:

String aquery="CREATE TABLE "+ATTENDANCE_TABLE_NAME+" ( COLUMN_DATE TEXT PRIMARY KEY );";
            db.execSQL(aquery);

And ALTER the table as: 并将表更改为:

String aquery="ALTER TABLE "+ATTENDANCE_TABLE_NAME+" ADD COLUMN '"+new_col_name+"' TEXT;";
db.execSQL(aquery);

now I am inserting a row a new row as: 现在我将新行插入为:

ContentValues Values=new ContentValues();
        SQLiteDatabase db=getWritableDatabase();
        // finding all column
        Cursor dbCursor = db.query(ATTENDANCE_TABLE_NAME, null, null, null, null, null, null);
        String[] columnNames = dbCursor.getColumnNames();
        String zero="0";

        for (int i=0;i<columnNames.length;i++)
        {
            // saving values to each specific column
            if(i==0)
                Values.put("COLUMN_DATE", date );
            else
                Values.put(columnNames[i],"'"+zero+"'");
        }
            check = db.insert(ATTENDANCE_TABLE_NAME, null , Values);

But I am getting this error: 但我收到此错误:

05-25 18:52:23.023 19480-19480/com.example.vikas.scannerproject E/SQLiteLog: (1) near "14202": syntax error
05-25 18:52:23.023 19480-19480/com.example.vikas.scannerproject E/SQLiteDatabase: Error inserting COLUMN_DATE=2017-05-25 14202='0'
android.database.sqlite.SQLiteException: near "14202": syntax error (code 1): , while compiling: INSERT INTO CSE_OS_2017_ATTENDANCE(COLUMN_DATE,14202) VALUES (?,?)
                                                                                  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                                  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
                                                                                  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
                                                                                  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.insertWithOnConflict(SQLiteDatabase.java:1469)
                                                                                  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
                                                                                  at com.example.vikas.scannerproject.Index_DBHandler.takingAttendance(Index_DBHandler.java:148)
                                                                                  at com.example.vikas.scannerproject.ScanresultActivity.takeAttendance(ScanresultActivity.java:44)
                                                                                  at com.example.vikas.scannerproject.ScanresultActivity.onCreate(ScanresultActivity.java:32)
                                                                                  at android.app.Activity.performCreate(Activity.java:6303)
                                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
                                                                                  at android.app.ActivityThread.access$900(ActivityThread.java:153)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5441)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

Please help me in insertion of new row. 帮我插入新行。

Column Names in SqLite may not start with a number[0-9]. SqLite中的列名不能以数字[0-9]开头。 Change the column name to something like "A14202". 将列名称更改为类似“ A14202”的名称。

BTW Adding a column for each assignment may not be the best design. 顺便说一句,为每个作业添加一列可能不是最佳设计。 SqLite will only allow 2000 columns. SqLite仅允许2000列。

Column names in sqlite should be start with the Alphabet letter{AZ,az}. sqlite中的列名称应以字母{AZ,az}开头。 It should not start with numeric value. 它不应以数值开头。 Try this: 尝试这个:

String aquery="ALTER TABLE "+ATTENDANCE_TABLE_NAME+" ADD COLUMN '"+"A"+new_col_name+"' TEXT;";
db.execSQL(aquery);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM