问题
This is written by me. There is something wrong with this code. When I debugged the code it is terminating in this file.So help is something which I need badly. data is not going into the database, I'm not able to retrieve data from database. Don't know whether the database, table create or not.
package com.Prasad.formdetails;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
//database version
private static final int Database_Version =1;
//database name
private static final String Database_Name = "persondetails";
//table name
private static final String Table_Name="persondetails";
//table column names
private static final String key_personName="Name";
private static final String key_mailId="mailID";
private static final String key_phone="Phone";
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREATE_DETAILS_TABLLE="CREATE TABLE" +
Table_Name + "(" + key_personName + "text" + key_mailId + "text primary key" + key_phone + "text" + ")";
db.execSQL(CREATE_DETAILS_TABLLE);
}
//constructor as no default constructor in super
public DatabaseHandler(Context context){
super(context,Database_Name, null, Database_Version);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
//delete the existing table while updating
db.execSQL("drop table if exists" + Table_Name);
//again create table
onCreate(db);
}
void addPerson(Person person) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(key_personName, person.getName()); // Person Name
values.put(key_mailId, person.getId()); // Person mail id
values.put(key_phone, person.getPhone()); // Person Phone
// Inserting Row
db.insert(Table_Name, null, values);
db.close(); // Closing database connection
}
Person getPerson(String id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor=db.query(Table_Name,new String[] {key_personName,key_mailId,key_phone}, key_mailId + "=?",
new String[]{id},null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Person person = new Person(cursor.getString(0),
cursor.getString(1), cursor.getString(2));
// return contact
return person;
}
}
If logcat can help you in anyway. watch this
08-29 00:12:48.115: E/SQLiteLog(32608): (1) near "TABLEpersondetails": syntax error
08-29 00:12:48.119: D/AndroidRuntime(32608): Shutting down VM
08-29 00:12:48.135: E/AndroidRuntime(32608): FATAL EXCEPTION: main
08-29 00:12:48.135: E/AndroidRuntime(32608): Process: com.Prasad.formdetails, PID: 32608
08-29 00:12:48.135: E/AndroidRuntime(32608): android.database.sqlite.SQLiteException: near "TABLEpersondetails": syntax error (code 1): , while compiling: CREATE TABLEpersondetails(NametextmailIDtext primary keyPhonetext)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
08-29 00:12:48.135: E/AndroidRuntime(32608): at com.Prasad.formdetails.DatabaseHandler.onCreate(DatabaseHandler.java:25)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
08-29 00:12:48.135: E/AndroidRuntime(32608): at com.Prasad.formdetails.DatabaseHandler.addPerson(DatabaseHandler.java:43)
08-29 00:12:48.135: E/AndroidRuntime(32608): at com.Prasad.formdetails.MainActivity2$1.onClick(MainActivity2.java:32)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.view.View.performClick(View.java:4761)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.view.View$PerformClick.run(View.java:19767)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.os.Handler.handleCallback(Handler.java:739)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.os.Handler.dispatchMessage(Handler.java:95)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.os.Looper.loop(Looper.java:135)
08-29 00:12:48.135: E/AndroidRuntime(32608): at android.app.ActivityThread.main(ActivityThread.java:5312)
08-29 00:12:48.135: E/AndroidRuntime(32608): at java.lang.reflect.Method.invoke(Native Method)
08-29 00:12:48.135: E/AndroidRuntime(32608): at java.lang.reflect.Method.invoke(Method.java:372)
08-29 00:12:48.135: E/AndroidRuntime(32608): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
08-29 00:12:48.135: E/AndroidRuntime(32608): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
回答1:
CREATE TABLEpersondetails
you missed a space after "TABLE"
change the line
String CREATE_DETAILS_TABLLE="CREATE TABLE" +
adding space, like below
String CREATE_DETAILS_TABLLE="CREATE TABLE " +
来源:https://stackoverflow.com/questions/32277710/data-not-going-into-database-and-not-coming-from-database-in-android