数据未进入数据库,并从数据库中的Andr​​oid不来 [英] data not going into database and not coming from database in android

查看:153
本文介绍了数据未进入数据库,并从数据库中的Andr​​oid不来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我写的。也有一些是不对的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 " + 

这篇关于数据未进入数据库,并从数据库中的Andr​​oid不来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆