使用SQLite的Android数据库错误

使用SQLite的Android数据库错误,android,database,sqlite,Android,Database,Sqlite,我已经在android中创建了一个数据库和一个单独的类列表。当通过单击add按钮添加项目时,它将添加到列表和数据库中。但是,单击“添加”按钮时会崩溃 这是列表类 package bookshelf.Android.Java; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.util.Log; impor

我已经在android中创建了一个数据库和一个单独的类列表。当通过单击add按钮添加项目时,它将添加到列表和数据库中。但是,单击“添加”按钮时会崩溃

这是列表类

package bookshelf.Android.Java;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import bookshelf.Android.Java.R;


public class Own extends Activity
{
    private EditText item;
    private ListView lv;
    private Toast toast;
    private Button addButton;
    ArrayList<String> items;
    ArrayAdapter<String> listad;
    List<String> books;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.own);
            CharSequence text = "Item added!";
            toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
            setUpView();



    }
    private void setUpView()
    {
        item = (EditText)this.findViewById(R.id.txtAmount);
        lv = (ListView)this.findViewById(R.id.listView1);
        addButton = (Button)this.findViewById(R.id.Add);
        items = new ArrayList<String>();
        items.clear();
        final DataBaseOwn dbo = new DataBaseOwn(Own.this);

        listad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);//need to create a way to get items to equal books
        lv.setAdapter(listad);
        addButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                addItemList();
                books = dbo.get(items);
                toast.show();
            }
        });
        item.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event)
            {
                // TODO Auto-generated method stub

                if (keyCode == KeyEvent.KEYCODE_ENTER)
                {
                    addItemList();
                }
                return true;
            }
        });
    }
    protected void addItemList()
    {
        // TODO Auto-generated method stub

        // TODO Auto-generated method stub
        if (isInputValid(item))
        {
            items.add(0,item.getText().toString());
            item.setText("");
            listad.notifyDataSetChanged();
        }
    }
    protected boolean isInputValid(EditText item2)
    {
        // TODO Auto-generatd method stub
        if (item2.getText().toString().trim().length()<1)
        {
            item2.setError("Please Enter Item");
            return false;
        } 
        else 
        {
            return true;
        }

    }
}
包bookshelf.Android.Java;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.Activity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.KeyEvent;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.Toast;
导入bookshelf.Android.Java.R;
公共类自身扩展活动
{
专用编辑文本项;
私有ListView lv;
私人吐司;
私人按钮添加按钮;
数组列表项;
ArrayAdapter listad;
列出书籍;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.own);
CharSequence text=“已添加项!”;
toast=toast.makeText(getApplicationContext(),text,toast.LENGTH\u SHORT);
setUpView();
}
私有void setUpView()
{
item=(EditText)this.findViewById(R.id.txtAmount);
lv=(ListView)this.findViewById(R.id.listView1);
addButton=(Button)this.findViewById(R.id.Add);
items=newarraylist();
items.clear();
final DataBaseOwn dbo=新的DataBaseOwn(Own.this);
listad=new ArrayAdapter(这个,android.R.layout.simple_list_item_1,items);//需要创建一种方法使项目与书籍相等
lv.设置适配器(listad);
addButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v)
{
addItemList();
books=dbo.get(项目);
toast.show();
}
});
item.setOnKeyListener(新视图.OnKeyListener(){
公共布尔onKey(视图v、int keyCode、KeyEvent事件)
{
//TODO自动生成的方法存根
if(keyCode==KeyEvent.keyCode\u输入)
{
addItemList();
}
返回true;
}
});
}
受保护的void addItemList()
{
//TODO自动生成的方法存根
//TODO自动生成的方法存根
如果(输入有效(项目))
{
添加(0,item.getText().toString());
项目.setText(“”);
notifyDataSetChanged();
}
}
受保护的布尔值isInputValid(EditText项2)
{
//TODO自动生成方法存根

如果(item2.getText().toString().trim().length()在SQLite查询中存在两个语法错误。更改此行:

db.execSQL("create table " + TABLE_NAME + "(" + ID + "integer primary key autoincrement not null" + BOOK + " text " + ");");
db.execSQL("create table " + TABLE_NAME + "(" + ID + " integer primary key autoincrement not null, " + BOOK + " text " + ");");
关于这一行:

db.execSQL("create table " + TABLE_NAME + "(" + ID + "integer primary key autoincrement not null" + BOOK + " text " + ");");
db.execSQL("create table " + TABLE_NAME + "(" + ID + " integer primary key autoincrement not null, " + BOOK + " text " + ");");

请注意在“integer”之前和“null”之后添加的空格。在“not null”之后还应该有一个逗号,告诉解析器书籍文本是一个新列。

好的,我修复了空格,现在我得到了这个错误以及其余的10-17 04:49:02.243:E/AndroidRuntime(2295):致命异常:main 10-17 04:49:02.243:E/AndroidRuntime(2295):android.database.sqlite.SQLiteException:near“nullbook”:语法错误:,编译时:create table OwnList(id integer主键自动递增非nullbook文本);