当前位置: 首页 > 知识库问答 >
问题:

SQLite在“create”附近给我一个错误:语法错误(代码1)

逄念
2023-03-14

E/SqliteDatabase(6729):Android.database.sqlite.sqliteException:“CREATE”附近:语法错误(代码1):,编译时:插入到创建表关系(_id整数主键自动增量,名称文本不为NULL,电子邮件文本不为NULL,年代文本不为NULL,位置文本不为NULL);(电子邮件,名称,年代,位置)值(?,?,?,?)

DbManager类

public class DBManager {

    int rowsAffected;

    // Database and version
    private static final String DB_NAME = "familyHistory";
    private static final int DB_VERSION = 1;

    private static final String TABLE_INFO = "familyTable"; 

    private static final String _ROWID = "_id";
    private static final String _NAME = "name";
    private static final String _EMAIL = "email";
    private static final String _AGE = "age";
    private static final String _LOCATIONs = "location"; 

    private static final String CREATE_PRO = "CREATE TABLE " + TABLE_INFO + "(" + 
            _ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
            _NAME + " TEXT NOT NULL, " + 
            _EMAIL + " TEXT NOT NULL, " + 
            _AGE + " TEXT NOT NULL, " + 
            _LOCATIONs + " TEXT NOT NULL);";

    private final Context ourContext;
    private static DBHelper ourDBHelper;
    private SQLiteDatabase ourDatabase;

    public DBManager(Context ctx) {
        this.ourContext = ctx;
        Log.i("db", "DBManager(Context ctx)");
    }

    private static class DBHelper extends SQLiteOpenHelper {

        public DBHelper(Context context) {
            // SQLiteOpenHelper Constructor Creating database
            super(context, DB_NAME, null, DB_VERSION);
            Log.i("db", "DBHelper(Context context)");
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_PRO);
            Log.e(">>>>>", CREATE_PRO);
            // db.execSQL(CREATE_TRVLBOK);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) {
            Log.w("Nomad", "Upgrading database from version " + oldVer + " to " + newVer
                    + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_INFO);
            // db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRAVELBOK);
            onCreate(db);
            Log.i("db", "onUpgrade)");
        }

    }

    public DBManager open() throws SQLException {
        ourDBHelper = new DBHelper(ourContext);
        ourDatabase = ourDBHelper.getWritableDatabase();
        Log.i("db", "open()");
        return this;
    }

    public void close() {
        ourDBHelper.close();
        Log.i("db", "close()");
    }



    public long insertFamRec(String UserName, String Email, String age, String location) {
        ContentValues cv = new ContentValues();
        cv.put(_NAME, UserName);
        cv.put(_EMAIL, Email);
        cv.put(_AGE, age);
        cv.put(_LOCATIONs, location);
        Log.i("db", "insertLocRec");
        return ourDatabase.insert(CREATE_PRO, null, cv);

    }
}

从插入类中,我添加了这些行,但仍然错误

DBManager db = new DBManager(NewRelation.this);
    db.open(); 
    long i = db.insertFamRec("strfullName", "stremail", "strage", "strlocation");

    db.close();
    if (i > 0) {
         ShowMessage.Message(NewRelation.this, "data is added");
    } else {
        Toast.makeText(getApplicationContext(), "data is failed", Toast.LENGTH_SHORT).show();
    }

如果有人给问题打分,请说明原因。

共有1个答案

谭畅
2023-03-14

问题似乎是在调用ourdatabase.insert的地方,传递查询字符串代替表名。您希望通过这行:returnourdatabase.insert(CREATE_PRO,null,cv);实现什么?

将行更改为:

return ourDatabase.insert(TABLE_INFO, null, cv);

注意,我传递的不是create_pro,而是table_info,这是要插入的表的名称。我希望这能解决你的问题。如果有帮助请告诉我。

 类似资料:
  • 我创建DbManger类来处理Sqlite数据库操作,我尝试在数据库中插入值,但它给出了一个错误 E/SQLiteDatabase(6729):android.database.sqlite.SQLiteExcture:近"CREATE":语法错误(代码1):,编译时: INSERT INTO CREATE表关系(_idINTEGER主键自动输入,名称文本不为空,电子邮件文本不为空,年龄文本不为空

  • 这是我的代码: LogCat说:12-11 23:43:50.553:E/AndroidRuntime(3706):android.database.sqlite.sqliteException:“create ;table”附近:语法错误(代码1):,编译时:create ;table PapersTable(_id integer ;primary ;key ;autoincrement,ti

  • 我有一些问题Laravel迁移。我的文章和标签之间有多对多的关系。'article_tag'迁移: 标签迁移: “第条移徙: 我的控制台日志: illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1 near“)”:语法错误(SQL:创建表“article_-tag”(“article_-id”integer不为null,“tag_-id”int

  • 我只是想创建一个包含一列的表,并向其中添加一些值,但我得到了两个错误。一种是取消对db.close()的注释;句柄关闭太快,另一个是下面是代码。

  • 我有一个方法,如果检查两个文本字段存在,然后重新调整记录ID。我方法是这样的: 我的桌子是这样的: 现在,当我运行该方法时,就像getQueryMatch(Mystr1,Mystr2); 我有一个错误: 我的select查询看起来很正常,但我不知道问题出在哪里?

  • 我的SQL语句语法有问题,LogCat说问题就在哪里。我哪里错了? 下面是我的代码: 任何帮助或建议都将欣然接受,这是我的项目的最后一块拼图。当我做完这件事我就可以Rest了。提前道谢。