数据未进入数据库,并从数据库中的Android不来 [英] data not going into database and not coming from database in android
本文介绍了数据未进入数据库,并从数据库中的Android不来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我写的。也有一些是不对的code。当我调试的code正是在这种file.So帮助终止是我需要的东西不好。
数据是不会到数据库中,我无法从数据库中检索数据。不知道数据库,表是否建立或没有。
包com.Prasad.formdetails;进口android.content.ContentValues;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteOpenHelper;公共类数据库处理器扩展SQLiteOpenHelper {
//数据库版本
私有静态最终诠释Database_Version = 1;
//数据库名
私有静态最后弦乐DATABASE_NAME =persondetails;
//表名
私有静态最后弦乐TABLE_NAME =persondetails;
//表列名
私有静态最后弦乐key_personName =姓名;
私有静态最后弦乐key_mailId =mailID;
私有静态最后弦乐key_phone =电话;
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
// TODO自动生成方法存根
字符串CREATE_DETAILS_TABLLE =CREATE TABLE+
TABLE_NAME +(+ key_personName +文本+ key_mailId +文本主键+ key_phone +文本+);
db.execSQL(CREATE_DETAILS_TABLLE);
}
//构造函数在超没有默认构造函数
公共数据库处理器(上下文的背景下){
超(背景下,数据库名称,空,Database_Version);
}
@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
// TODO自动生成方法存根
//删除现有的表,同时更新
db.execSQL(+表格名是否存在删除表);
//重新创建表
的onCreate(DB);
} 无效addPerson的(人人){
SQLiteDatabase分贝= this.getWritableDatabase(); ContentValues值=新ContentValues();
values.put(key_personName,person.getName()); //人名
values.put(key_mailId,person.getId()); //人的邮件编号
values.put(key_phone,person.getPhone()); //电话的人 //插入行
db.insert(TABLE_NAME,空,价值);
db.close(); //关闭数据库连接
} 人getPerson(字符串ID){
SQLiteDatabase分贝= this.getReadableDatabase();
光标光标= db.query(TABLE_NAME,新的String [] {key_personName,key_mailId,key_phone},key_mailId +=?,
新的String [] {ID},NULL,NULL,NULL,NULL);
如果(指针!= NULL)
cursor.moveToFirst(); 人人=新的Person(cursor.getString(0)
cursor.getString(1),cursor.getString(2));
//返回接触
返回的人;
}
}
如果logcat的可以帮助你反正。看这个
08-29 00:12:48.115:E / SQLiteLog(32608):(1)近TABLEpersondetails:语法错误
08-29 00:12:48.119:D / AndroidRuntime(32608):关闭VM
08-29 00:12:48.135:E / AndroidRuntime(32608):致命异常:主要
08-29 00:12:48.135:E / AndroidRuntime(32608):工艺:com.Prasad.formdetails,PID:32608
08-29 00:12:48.135:E / AndroidRuntime(32608):android.database.sqlite.SQLiteException:近TABLEpersondetails:语法错误(code 1),在编译:CREATE TABLEpersondetails(NametextmailIDtext主要keyPhonetext)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteConnection.native prepareStatement(本机方法)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteConnection.acquire preparedStatement(SQLiteConnection.java:889)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteConnection prepare(SQLiteConnection.java:500)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteSession prepare(SQLiteSession.java:588)
。08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteProgram<&初始化GT;(SQLiteProgram.java:58)
。08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteStatement<&初始化GT;(SQLiteStatement.java:31)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
08-29 00:12:48.135:E / AndroidRuntime(32608):在com.Prasad.formdetails.DatabaseHandler.onCreate(DatabaseHandler.java:25)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
08-29 00:12:48.135:E / AndroidRuntime(32608):在com.Prasad.formdetails.DatabaseHandler.addPerson(DatabaseHandler.java:43)
08-29 00:12:48.135:E / AndroidRuntime(32608):在com.Prasad.formdetails.MainActivity2 $ 1.onClick(MainActivity2.java:32)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.view.View.performClick(View.java:4761)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.view.View $ PerformClick.run(View.java:19767)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.os.Handler.handleCallback(Handler.java:739)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.os.Handler.dispatchMessage(Handler.java:95)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.os.Looper.loop(Looper.java:135)
08-29 00:12:48.135:E / AndroidRuntime(32608):在android.app.ActivityThread.main(ActivityThread.java:5312)
08-29 00:12:48.135:E / AndroidRuntime(32608):在java.lang.reflect.Method.invoke(本机方法)
08-29 00:12:48.135:E / AndroidRuntime(32608):在java.lang.reflect.Method.invoke(Method.java:372)
08-29 00:12:48.135:E / AndroidRuntime(32608):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:901)
08-29 00:12:48.135:E / AndroidRuntime(32608):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
解决方案
CREATE TABLEpersondetails
您错过了TABLE
在一个空格修改行
字符串CREATE_DETAILS_TABLLE =CREATE TABLE+
增加空间,像下面
字符串CREATE_DETAILS_TABLLE =CREATE TABLE+
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)
解决方案
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 " +
这篇关于数据未进入数据库,并从数据库中的Android不来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文