使用SQLite的Android数据库错误
我已经在android中创建了一个数据库和一个单独的类列表。当通过单击add按钮添加项目时,它将添加到列表和数据库中。但是,单击“添加”按钮时会崩溃 这是列表类使用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
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文本);