sqlite中的Android数据库连接

时间:2014-06-30 17:23:52

标签: android

我想在android中连接数据库这里是代码

package com.example.visiting_card;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataBaseHandler extends SQLiteOpenHelper {

private static String Databasename="contact.db";
private static int version=1;
private String KEY_ID="id";
private String Table_name="contact_details";
private String KEY_NAME="name";
private static String Email="email";
private static String Contact="contact";
private static String Company="company";
private static String address1="address1";
private static String address2="address2";
private static String State="state";

public DataBaseHandler(Context context)
         {
    super(context,Databasename, null, version);
    Log.d("jhgd","sd");
    // TODO Auto-generated constructor stub
        }
@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String Table_create="create table" + Table_name + " (" + KEY_ID + "   
     INTEGER PRIMARY KEY AUTOINCREMENT," + Email + " text,"
            + Contact +" text," + Company + " text," + address1 + "  
        text," + address2 + " text," + State +" text" + ")";
        db.execSQL(Table_create);
        Log.d("datbase", "datebase created");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF NOT EXITS " + Table_name);
    Log.d("datbase", "datebase deleted");
    onCreate(db);
}

public void addcontacts(Contact contact){
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(KEY_NAME, contact.Name);
    values.put(Email, contact.Email);
    values.put(Contact, contact.Contact);
    values.put(Company,contact.Company);
    values.put(address1,contact.address1);
    values.put(address2, contact.addreaa2);
    db.insert(Table_name, null, values);
    Log.d("sds", "inserting");
}

    }

这是contact.java文件

package com.example.visiting_card;

public class Contact {



public static String Name;
public static String Email;
public static String Contact;
public static String Company;
public static String address1;
public static String addreaa2;
public static String State;

    public Contact(String name,String email,String contact,String    
  company,String address1,String address2,String state){
        this.Name=name;
        this.Email=email;
        this.Contact=contact;
        this.Company=company;
        this.address1=address1;
        this.addreaa2=address2;
        this.State=state;

    }

我收到的错误是logcat错误消息msg

enter code here 
06-30 13:14:43.104: E/AndroidRuntime(941): FATAL EXCEPTION: main
06-30 13:14:43.104: E/AndroidRuntime(941): Process: com.example.visiting_card, PID: 941
06-30 13:14:43.104: E/AndroidRuntime(941): android.database.sqlite.SQLiteException:   
near "tablecontact_details": syntax error (code 1): , while compiling: create  
tablecontact_details (id INTEGER PRIMARY KEY AUTOINCREMENT,email text,contact 
text,company text,address1 text,address2 text,state text)
06-30 13:14:43.104: E/AndroidRuntime(941):  at  
android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
06-30 13:14:43.104: E/AndroidRuntime(941):  at   

android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)    06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)     06-30 13:14:43.104:E / AndroidRuntime(941):在android.database.sqlite.SQLiteProgram。
    (SQLiteProgram.java:58)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteStatement。    (SQLiteStatement.java:31)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1672)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603)     06-30 13:14:43.104:E / AndroidRuntime(941):在     com.example.visiting_card.DataBaseHandler.onCreate(DataBaseHandler.java:35)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)     06-30 13:14:43.104:E / AndroidRuntime(941):在     com.example.visiting_card.DataBaseHandler.addcontacts(DataBaseHandler.java:48)     06-30 13:14:43.104:E / AndroidRuntime(941):在     com.example.visiting_card.SignIN.database(SignIN.java:66)     06-30 13:14:43.104:E / AndroidRuntime(941):在     com.example.visiting_card.SignIN.access $ 0(SignIN.java:62)     06-30 13:14:43.104:E / AndroidRuntime(941):在     com.example.visiting_card.SignIN $ 1.onClick(SignIN.java:54)     06-30 13:14:43.104:E / AndroidRuntime(941):在     android.view.View.performClick(View.java:4424)

06-30 13:14:43.104: E/AndroidRuntime(941):  at  
android.view.View$PerformClick.run(View.java:18383)
06-30 13:14:43.104: E/AndroidRuntime(941):  at  
android.os.Handler.handleCallback(Handler.java:733)
06-30 13:14:43.104: E/AndroidRuntime(941):  at    
android.os.Handler.dispatchMessage(Handler.java:95)
06-30 13:14:43.104: E/AndroidRuntime(941):  at android.os.Looper.loop(Looper.java:137)
06-30 13:14:43.104: E/AndroidRuntime(941):  at  
android.app.ActivityThread.main(ActivityThread.java:4998)
06-30 13:14:43.104: E/AndroidRuntime(941):  at  
java.lang.reflect.Method.invokeNative(Native Method)
06-30 13:14:43.104: E/AndroidRuntime(941):  at  
java.lang.reflect.Method.invoke(Method.java:515)
06-30 13:14:43.104: E/AndroidRuntime(941):  at  
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
06-30 13:14:43.104: E/AndroidRuntime(941):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
06-30 13:14:43.104: E/AndroidRuntime(941):  at dalvik.system.NativeStart.main(Native   
Method)

1 个答案:

答案 0 :(得分:1)

看起来您错过了SQL中的空间来创建表。它可能应该是:

create table contact_details (id INTEGER PRIMARY KEY AUTOINCREMENT,email text,contact text,company text,address1 text,address2 text,state text)

尝试更改onCreate函数,在'table'关键字后添加一个空格,如下所示:

public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String Table_create="create table " + Table_name + " (" + KEY_ID + "   
        INTEGER PRIMARY KEY AUTOINCREMENT," + Email + " text,"
        + Contact +" text," + Company + " text," + address1 + "  
        text," + address2 + " text," + State +" text" + ")";
    db.execSQL(Table_create);
相关问题