Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android.database.sqlite.SQLiteException:没有这样的表:CLTABLE(代码1):,编译时:INSERT-INTO-table_Android_Sqlite - Fatal编程技术网

android.database.sqlite.SQLiteException:没有这样的表:CLTABLE(代码1):,编译时:INSERT-INTO-table

android.database.sqlite.SQLiteException:没有这样的表:CLTABLE(代码1):,编译时:INSERT-INTO-table,android,sqlite,Android,Sqlite,嘿,我创建了我的数据库,想在init中插入一些字段,但是得到了一个sqliteexception没有这样的表,并且在编译时无法插入到表中。获取id值-1时,我没有得到确切的错误 public long insertData(String name, String number, String email, String jobtype, String uri, String msg) { SQLiteDatabase db = database.getWritableDatabase()

嘿,我创建了我的数据库,想在init中插入一些字段,但是得到了一个sqliteexception没有这样的表,并且在编译时无法插入到表中。获取id值-1时,我没有得到确切的错误

public long insertData(String name, String number, String email, String jobtype, String uri, String msg)
{
    SQLiteDatabase db = database.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(database.NAME, name);
    contentValues.put(database.NUMBER, number);
    contentValues.put(database.EMAIL, email);
    contentValues.put(database.JOBTYPE, jobtype);
    contentValues.put(database.URI, uri);
    contentValues.put(database.MSG, msg);
    long id = db.insert(database.TABLE_NAME, null, contentValues);
    return id;
}

 static class Database extends SQLiteOpenHelper{

    private static final String DATABASE_NAME="cloudicadatabase";
    private static final String TABLE_NAME="CLTABLE";
    private static final int DATABASE_VERSION= 1;
    private static final String COLUMN_UID = "_id";
    private static final String NAME="Name";
    private static final String NUMBER="Number";
    private static final String EMAIL="Email";
    private static final String JOBTYPE="Jobtype";
    private static final String URI="Uri";
    private static final String MSG="Msg";
    private static final String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME + "(" +
            COLUMN_UID + "INTEGER PRIMARY KEY AUTOINCREMENT, " +
            NAME + "VARCHAR(32) NOT NULL, " +
            NUMBER + "INTEGER, " +
            EMAIL + "VARCHAR(25) NOT NULL, " +
            JOBTYPE + "VARCHAR(20) NOT NULL, " +
            URI + "VARCHAR(50) NOT NULL, " +
            MSG + "VARCHAR(500) NOT NULL);";
    private static final String DROP_TABLE = "DROP TABLE "+TABLE_NAME+" IF EXISTS";

    private Context context;
    public Database(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        try {
            db.execSQL(CREATE_TABLE);
        } catch (SQLException e) {
            Message.message(context, ""+e);
        }

    }
main.java

public void submit(View view)
{
    String nam = name.getText().toString();
    String numb = num.getText().toString();
    String mail = email.getText().toString();
    String jtype = job.getText().toString();
    String ur = uri.getText().toString();
    String msag = msg.getText().toString();

    long id = database.insertData(nam, numb, mail, jtype, ur, msag);

    if (id < 0)
    {
        Message.message(this, "Unsucessful");
    }
    else {
        Message.message(this, "Submited");
    }

logcat

        no such table: CLTABLE
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase: Error inserting Jobtype=dfg Msg=gfdgfd Number=543 Uri=gfd Email=fdgf Name=sau
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase: android.database.sqlite.SQLiteException: no such table: CLTABLE (code 1): , while compiling: INSERT INTO CLTABLE(Jobtype,Msg,Number,Uri,Email,Name) VALUES (?,?,?,?,?,?)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at com.sun.suni.design.DataAdapter.insertData(DataAdapter.java:30)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at com.sun.suni.design.Details.submit(Details.java:36)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at java.lang.reflect.Method.invoke(Native Method)
    12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:     at java.lang.reflect.Method.invoke(Method.java:372)
public long insertData(字符串名称、字符串编号、字符串电子邮件、字符串作业类型、字符串uri、字符串消息)
{
SQLiteDatabase db=database.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
contentValues.put(database.NAME,NAME);
contentValues.put(database.NUMBER,NUMBER);
contentValues.put(database.EMAIL,EMAIL);
contentValues.put(database.JOBTYPE,JOBTYPE);
contentValues.put(database.URI,URI);
contentValues.put(database.MSG,MSG);
long id=db.insert(database.TABLE_NAME,null,contentValues);
返回id;
}
静态类数据库扩展了SQLiteOpenHelper{
私有静态最终字符串数据库\u NAME=“cloudicadatabase”;
私有静态最终字符串表\u NAME=“CLTABLE”;
私有静态最终int数据库_VERSION=1;
私有静态最终字符串列_UID=“_id”;
私有静态最终字符串NAME=“NAME”;
私有静态最终字符串NUMBER=“NUMBER”;
私有静态最终字符串EMAIL=“EMAIL”;
私有静态最终字符串JOBTYPE=“JOBTYPE”;
私有静态最终字符串URI=“URI”;
私有静态最终字符串MSG=“MSG”;
私有静态最终字符串CREATE_TABLE=“CREATE TABLE”+TABLE_NAME+”(“+
列UID+“整数主键自动递增,”+
名称+“VARCHAR(32)不为空,”+
数字+整数,“+
电子邮件+“VARCHAR(25)不为空,”+
JOBTYPE+“VARCHAR(20)不为空,”+
URI+“VARCHAR(50)不为空,”+
MSG+“VARCHAR(500)非空);”;
私有静态最终字符串DROP\u TABLE=“DROP TABLE”+表名称+“如果存在”;
私人语境;
公共数据库(上下文){
super(上下文、数据库名称、null、数据库版本);
this.context=上下文;
}
@凌驾
public void onCreate(SQLiteDatabase db){
试一试{
db.execSQL(创建_表);
}捕获(SQLE异常){
信息。信息(上下文,“+e”);
}
}
main.java
公共作废提交(查看)
{
字符串nam=name.getText().toString();
字符串numb=num.getText().toString();
字符串mail=email.getText().toString();
字符串jtype=job.getText().toString();
字符串ur=uri.getText().toString();
字符串msag=msg.getText().toString();
long id=database.insertData(nam、numb、mail、jtype、ur、msag);
if(id<0)
{
Message.Message(此为“未成功”);
}
否则{
信息。信息(本“提交”);
}
logcat
没有这样的表格:CLTABLE
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:插入Jobtype=dfg Msg=gfdgffd Number=543 Uri=gfd Email=fdgfgf Name=sau时出错
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:android.database.sqlite.SQLiteException:没有这样的表:CLTABLE(代码1):,编译时:插入CLTABLE(作业类型、消息、编号、Uri、电子邮件、名称)值(?,,,,,,,?)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteConnection.acquiredPreparedStatement(SQLiteConnection.java:889)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at-android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at com.sun.suni.design.DataAdapter.insertData(DataAdapter.java:30)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:com.sun.suni.design.Details.submit(Details.java:36)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at java.lang.reflect.Method.invoke(本机方法)
12-24 12:32:17.794 13270-13270/com.sun.suni.design E/SQLiteDatabase:at java.lang.reflect.Method.invoke(Method.java:372)

您的表未创建,因此您得到了
NPE

您应该在
列名
列类型

 private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" +
        COLUMN_UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        NAME + " VARCHAR(32) NOT NULL, " +
        NUMBER + " INTEGER, " +
        EMAIL + " VARCHAR(25) NOT NULL, " +
        JOBTYPE + " VARCHAR(20) NOT NULL, " +
        URI + " VARCHAR(50) NOT NULL, " +
        MSG + " VARCHAR(500) NOT NULL);";

“创建表”后缺少空格:


有很多用于检查SQL命令的工具,您应该始终将SQL命令输出到字符串,并查看它们是否在这样的工具中工作。如果它们不工作,则说明您的命令有问题。我已经给出了空格,但没有相同的更改issue@sun卸载并再次运行,如果不起作用,发布日志是的,我收到了,谢谢@M D,有必要吗每次插入新记录时都需要卸载
private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" +
            COLUMN_UID + "INTEGER PRIMARY KEY AUTOINCREMENT, " +
            NAME + "VARCHAR(32) NOT NULL, " +
            NUMBER + "INTEGER, " +
            EMAIL + "VARCHAR(25) NOT NULL, " +
            JOBTYPE + "VARCHAR(20) NOT NULL, " +
            URI + "VARCHAR(50) NOT NULL, " +
            MSG + "VARCHAR(500) NOT NULL);";