安卓:sqlite的错误 - (1)近及QUOT;零":语法错误 [英] Android : Sqlite error - (1) near "null": syntax error
问题描述
我'从服务器作为一个JSONObject获取数据和现在的储蓄,以我的表。
我'对着下面的错误。
2月11日至22日:18:35.489:E / AndroidRuntime(2597):android.database.sqlite.SQLiteException:近零:语法错误(code 1),在编译:CREATE TABLE Conntact(空INTEGER PRIMARY KEY AUTOINCREMENT,空TEXT,空TEXT,空TEXT,空TEXT,空TEXT,空TEXT);
块引用>的for(int i = 0; I< contactdata.length();我++)
{
JSONObject的CONT = contactdata.getJSONObject(I)
字符串CON_ID =的getValue(续,ID);
的System.out.println(的ContactID+ CON_ID);
字符串FIRST_NAME =的getValue(续FIRST_NAME);
字符串姓氏=的getValue(续,姓氏);
字符串SHORT_NAME =的getValue(续简称的);
字符串PID =的getValue(续,PID);
串CID =的getValue(续,CID);
串号=的getValue(续914424411295);
Conntact CON =新Conntact(getActivity());
con.insertValues(CON_ID,SHORT_NAME,名字,姓氏,人数,PID,CID);
Toast.makeText(CTX,接触内幕,Toast.LENGTH_SHORT).show();
}这是我的Conntact类
公共类Conntact {公共Conntact(){ // TODO自动生成构造函数存根
}
静态SQLiteDatabase分贝;
静态ContactDB DEDB;
公共Conntact(上下文的背景下)
{
DEDB =新ContactDB(背景);
}
公共静态SQLiteDatabase的open()
{
返回dedb.getWritableDatabase();
}
公共无效的close()
{
dedb.close();
}
公共无效insertValues(CON_ID字符串,字符串SHORT_NAME,FIRST_NAME字符串,字符串姓氏,PID字符串,字符串CID,串号)
{
DB =开();
ContentValues值=新ContentValues();
values.put(ContactDB.con_id,CON_ID);
values.put(ContactDB.short_name,SHORT_NAME);
values.put(ContactDB.first_name,FIRST_NAME);
values.put(ContactDB.last_name,姓氏);
values.put(ContactDB.pid,PID);
values.put(ContactDB.cid,CID);
values.put(ContactDB.number,数);
db.insert(ContactDB.TABLE_NAME,空,价值);
this.close();
}公众的ArrayList<串GT;的GetValues()
{
ArrayList的<串GT;名称=新的ArrayList<串GT;();
DB =开();
查询字符串= + ContactDB.TABLE_NAME从选择*;
光标光标= db.rawQuery(查询,NULL);
如果(cursor.moveToFirst())
{
做{
names.add(cursor.getString(cursor.getColumnIndex(ContactDB.con_id)));
names.add(cursor.getString(cursor.getColumnIndex(ContactDB.number)));
names.add(cursor.getString(cursor.getColumnIndex(ContactDB.first_name)));
names.add(cursor.getString(cursor.getColumnIndex(ContactDB.last_name)));
names.add(cursor.getString(cursor.getColumnIndex(ContactDB.short_name)));;
names.add(cursor.getString(cursor.getColumnIndex(ContactDB.pid)));;
//names.add(cursor.get)
}而(cursor.moveToNext());
}
返回名称;}
公共静态布尔isAvailable(串号)
{
DB =开();
查询字符串= + ContactDB.TABLE_NAME +,从选择*,其中+ ContactDB.number +=+号;
光标C = db.rawQuery(查询,NULL);
如果(C == NULL)
{
返回false;
}其他
返回true;
}
}这是我的ContactDB类
公共类ContactDB扩展SQLiteOpenHelper {
公共静态最后弦乐DATABASE_NAME =AA_DB_NAME;
公共静态最后弦乐TABLE_NAME =Conntact;
公共静态最终诠释VERSION = 1;
公共ContactDB(上下文的背景下){
超(背景下,DATABASE_NAME,空,VERSION);
// TODO自动生成构造函数存根
}公共静态字符串CON_ID;
公共静态字符串SHORT_NAME;
公共静态字符串FIRST_NAME;
公共静态字符串姓氏;
公共静态字符串PID;
公共静态字符串CID;
公共静态串号;
公共静态字符串CREATE_QUERY =创建表+ TABLE_NAME +(+ CON_ID +INTEGER PRIMARY KEY AUTOINCREMENT,+ SHORT_NAME +TEXT+ FIRST_NAME +TEXT+姓氏+TEXT+ PID +TEXT+ CID + TEXT,+数字+TEXT);;
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
// TODO自动生成方法存根
db.execSQL(CREATE_QUERY);
}@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
// TODO自动生成方法存根
db.execSQL(DROP TABLE+ TABLE_NAME +IF NOT EXISTS);
}}我不知道我做了错误。请帮助,如果我在一个错误的方式去。
解决方案正如前面提到的,你需要分配值
公共静态字符串
■在ContactDB
类。你也应该让他们最后
,以$ P $被意外修改pvent他们。公共静态最后弦乐CON_ID =CON_ID;
公共静态最后弦乐SHORT_NAME =SHORT_NAME;
公共静态最后弦乐FIRST_NAME =FIRST_NAME;
公共静态最后弦乐姓氏=姓氏;
公共静态最后弦乐PID =PID;
公共静态最后弦乐CID =CID;
公共静态最后弦乐数=数字;I'am getting data from the server as a JSONObject and am saving to my table.
I'am facing the following error.
11-22 02:18:35.489: E/AndroidRuntime(2597): android.database.sqlite.SQLiteException: near "null": syntax error (code 1): , while compiling: create table Conntact (null INTEGER PRIMARY KEY AUTOINCREMENT, null TEXT, null TEXT, null TEXT, null TEXT, null TEXT, null TEXT);
for(int i=0;i<contactdata.length();i++) { JSONObject cont = contactdata.getJSONObject(i); String con_id = getValue(cont, "id"); System.out.println("contactid"+con_id); String first_name = getValue(cont, "first_name"); String last_name = getValue(cont, "last_name"); String short_name = getValue(cont, "short_name"); String pid = getValue(cont, "pid"); String cid = getValue(cont, "cid"); String number = getValue(cont, "914424411295"); Conntact con = new Conntact(getActivity()); con.insertValues(con_id, short_name, first_name, last_name, number, pid, cid); Toast.makeText(ctx, "contact inside", Toast.LENGTH_SHORT).show(); }
This is my Conntact class
public class Conntact { public Conntact() { // TODO Auto-generated constructor stub } static SQLiteDatabase db; static ContactDB dedb; public Conntact(Context context) { dedb = new ContactDB(context); } public static SQLiteDatabase open() { return dedb.getWritableDatabase(); } public void close() { dedb.close(); } public void insertValues(String con_id, String short_name,String first_name,String last_name,String pid,String cid,String number) { db = open(); ContentValues values = new ContentValues(); values.put(ContactDB.con_id, con_id); values.put(ContactDB.short_name, short_name); values.put(ContactDB.first_name, first_name); values.put(ContactDB.last_name, last_name); values.put(ContactDB.pid, pid); values.put(ContactDB.cid, cid); values.put(ContactDB.number, number); db.insert(ContactDB.TABLE_NAME, null, values); this.close(); } public ArrayList<String> getValues() { ArrayList<String> names = new ArrayList<String>(); db = open(); String query = "select * from "+ContactDB.TABLE_NAME; Cursor cursor = db.rawQuery(query, null); if(cursor.moveToFirst()) { do{ names.add(cursor.getString(cursor.getColumnIndex(ContactDB.con_id))); names.add(cursor.getString(cursor.getColumnIndex(ContactDB.number))); names.add(cursor.getString(cursor.getColumnIndex(ContactDB.first_name))); names.add(cursor.getString(cursor.getColumnIndex(ContactDB.last_name))); names.add(cursor.getString(cursor.getColumnIndex(ContactDB.short_name)));; names.add(cursor.getString(cursor.getColumnIndex(ContactDB.pid)));; //names.add(cursor.get) }while(cursor.moveToNext()); } return names; } public static boolean isAvailable(String number) { db = open(); String query = "select * from"+ContactDB.TABLE_NAME+"where"+ContactDB.number+"="+number; Cursor c =db.rawQuery(query, null); if(c==null) { return false; }else return true; } }
This is my ContactDB class
public class ContactDB extends SQLiteOpenHelper{ public static final String DATABASE_NAME = "AA_DB_NAME"; public static final String TABLE_NAME = "Conntact"; public static final int VERSION = 1; public ContactDB(Context context) { super(context, DATABASE_NAME, null, VERSION); // TODO Auto-generated constructor stub } public static String con_id; public static String short_name; public static String first_name; public static String last_name; public static String pid; public static String cid; public static String number; public static String CREATE_QUERY = "create table "+TABLE_NAME+" ("+con_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+short_name+" TEXT, "+first_name+" TEXT, "+last_name+" TEXT, "+pid+" TEXT, "+cid+" TEXT, "+number+" TEXT);"; @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(CREATE_QUERY); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE "+TABLE_NAME+" IF NOT EXISTS"); } }
I don't know where i did mistakes. Please help if i go in a wrong way.
解决方案As mentioned, you need to assign values to the
public static String
s in theContactDB
class. You should also make themfinal
, to prevent them from being accidentally modified.public static final String con_id = "con_id"; public static final String short_name = "short_name"; public static final String first_name = "first_name"; public static final String last_name = "last_name"; public static final String pid = "pid"; public static final String cid = "cid"; public static final String number = "number";
这篇关于安卓:sqlite的错误 - (1)近及QUOT;零&QUOT;:语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!