Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
Java SQL数据库错误:表没有列名_Java_Android_Mysql - Fatal编程技术网

Java SQL数据库错误:表没有列名

Java SQL数据库错误:表没有列名,java,android,mysql,Java,Android,Mysql,我已经浏览了很多论坛的答案,但问题通常不是这样 在应该的位置添加“,”或空格,这会将SQL语句更改为不应该的状态 我试着看了看我的,但仍然找不到onCreate中的错误。我每次都使用Genymotion来模拟应用程序,这样模拟器就不会有以前的数据库版本,所以onUpgrade方法应该不会有问题 这是日志 09-19 07:54:26.137 7344-7344/com.example.cartermah.mywishlist E/SQLiteLog﹕ (1) table wishes ha

我已经浏览了很多论坛的答案,但问题通常不是这样 在应该的位置添加“,”或空格,这会将SQL语句更改为不应该的状态

我试着看了看我的,但仍然找不到onCreate中的错误。我每次都使用Genymotion来模拟应用程序,这样模拟器就不会有以前的数据库版本,所以onUpgrade方法应该不会有问题

这是日志

09-19 07:54:26.137    7344-7344/com.example.cartermah.mywishlist E/SQLiteLog﹕ (1) table wishes has no column named content
09-19 07:54:26.137    7344-7344/com.example.cartermah.mywishlist E/SQLiteDatabase﹕ Error inserting content=jalksjldk title=HIHI recorddate=1442663666139
    android.database.sqlite.SQLiteException: table wishes has no column named content (code 1): , while compiling: INSERT INTO wishes(content,title,recorddate) VALUES (?,?,?)
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
            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:1467)
            at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
            at data.DatabaseHandler.addWishes(DatabaseHandler.java:67)
            at com.example.cartermah.mywishlist.MainActivity.saveToDB(MainActivity.java:53)
            at com.example.cartermah.mywishlist.MainActivity.access$000(MainActivity.java:15)
            at com.example.cartermah.mywishlist.MainActivity$1.onClick(MainActivity.java:36)
            at android.view.View.performClick(View.java:4240)
            at android.view.View$PerformClick.run(View.java:17721)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
09-19 07:54:26.137    7344-7344/com.example.cartermah.mywishlist V/Wished saved!﹕ yeah
主要活动

package com.example.cartermah.mywishlist;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import data.DatabaseHandler;
import model.MyWish;

public class MainActivity extends AppCompatActivity {

    private EditText title;
    private EditText content;
    private Button saveButton;
    private DatabaseHandler dba;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dba = new DatabaseHandler(MainActivity.this);

        title = (EditText)findViewById(R.id.titleEditText);
        content = (EditText)findViewById(R.id.wishEditText);
        saveButton = (Button)findViewById(R.id.saveButton);

        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveToDB();
            }
        });






    }

    private void saveToDB() {

        MyWish wish = new MyWish();
        wish.setTitle(title.getText().toString().trim());
        wish.setContent(content.getText().toString().trim());

        dba.addWishes(wish);
        dba.close();

        // clear the form once users click the save button.

        title.setText("");
        content.setText("");

       // Intent i = new Intent(MainActivity.this, WishDetailActivity.class);
       // startActivity(i);

    }


}

插入时需要添加id,因为id不是自动递增的。或者使id自动递增。

您提到使用Genymotion作为现有DB的理由不会有问题,但我认为这不是一个准确的假设。除非在启动新应用程序之前完全卸载该应用程序,否则以前的数据库版本仍在设备上,不会被覆盖。我建议从Genymotion完全卸载该应用程序,然后使用最新的onCreate语句安装它,并查看新安装是否会覆盖以前数据库版本中可能出现的任何问题。

我遇到了同样的问题,但我所做的只是卸载应用程序并重新安装,它工作得很好。

创建愿望表中使用
varchar
而不是
文本
作为
内容
后再试一次。没有什么变化。我仍然会遇到同样的错误。为什么这个标签是mysql?是否尝试在onCreated中记录表创建查询?为什么不把数据库拉下来,看看表到底是什么样子的呢。该错误表示您的表不是您期望的。您可以尝试转储数据库以查看结构是否正确。请参阅此帖子:。试一下可能有用。没有什么变化。我仍然得到相同的错误。您是否在第一次创建数据库后添加了“内容”列?
public class Constants {

    public static final String DATABASE_NAME = "wishdb";
    public static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "wishes";
    public static final String TITLE_NAME = "title";
    public static final String CONTENT_NAME = "content";
    public static final String DATE_NAME = "recorddate";
    public static final String KEY_ID = "_id";


}
package com.example.cartermah.mywishlist;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import data.DatabaseHandler;
import model.MyWish;

public class MainActivity extends AppCompatActivity {

    private EditText title;
    private EditText content;
    private Button saveButton;
    private DatabaseHandler dba;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dba = new DatabaseHandler(MainActivity.this);

        title = (EditText)findViewById(R.id.titleEditText);
        content = (EditText)findViewById(R.id.wishEditText);
        saveButton = (Button)findViewById(R.id.saveButton);

        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveToDB();
            }
        });






    }

    private void saveToDB() {

        MyWish wish = new MyWish();
        wish.setTitle(title.getText().toString().trim());
        wish.setContent(content.getText().toString().trim());

        dba.addWishes(wish);
        dba.close();

        // clear the form once users click the save button.

        title.setText("");
        content.setText("");

       // Intent i = new Intent(MainActivity.this, WishDetailActivity.class);
       // startActivity(i);

    }


}