Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在ANDROID中从sqlite数据库获取数据??_Java_Android_Android Layout - Fatal编程技术网

Java 如何在ANDROID中从sqlite数据库获取数据??

Java 如何在ANDROID中从sqlite数据库获取数据??,java,android,android-layout,Java,Android,Android Layout,我第一次在Android中使用sqlite数据库,我已经在sqlite中创建了我的数据库并将其复制到Android“资产”,我想通过“点击”按钮从数据库中获取数据,我有一个表包含4个字段“ID、位置、晶格度、经度”,但我无法从中获取任何数据。 在我的xml中,我为插入数据“latitude”和“longitude”创建了两个“编辑文本”,然后按“search”按钮从数据库中获取数据位置。 但是我不能得到任何数据。 我是android新手 请帮帮我 在这里我张贴我的代码 DBAdapter pac

我第一次在Android中使用sqlite数据库,我已经在sqlite中创建了我的数据库并将其复制到Android“资产”,我想通过“点击”按钮从数据库中获取数据,我有一个表包含4个字段“ID、位置、晶格度、经度”,但我无法从中获取任何数据。 在我的xml中,我为插入数据“latitude”和“longitude”创建了两个“编辑文本”,然后按“search”按钮从数据库中获取数据位置。 但是我不能得到任何数据。 我是android新手 请帮帮我

在这里我张贴我的代码

DBAdapter

package com.joel.databases;

import java.io.IOException;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;

import android.content.Context;
import android.content.res.AssetManager;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;

public class DBAdapter {

private static String DB_PATH = "/data/data/com.tracking/databases/";
private static String DB_NAME = "tracking.sqlite";
private SQLiteDatabase db; 
//private final Context myContext;
private DBAdapter DBHelper;
private final Context context;

public DBAdapter(Context ctx) 
{
    this.context = ctx;
    DBHelper = new DBAdapter(context);
    //super(context, DB_NAME, null, 1);
    //this.myContext = context;
}

public void createDataBase() throws IOException {
    boolean dbExist = checkDataBase();
    if (!dbExist) {
        /*By calling this method and empty database will be created into            the          default system path
          of your application so we are gonna be able to overwrite that database with our database.
        */
        this.getReadableDatabase();
        try {
            copyDataBase();
        } catch (IOException e) {
            throw new Error("Error copying database file.");
        }
      }
     } 

private void getReadableDatabase() {
    // TODO Auto-generated method stub

}

public boolean checkDataBase(){
    SQLiteDatabase checkDB = null;
    try {
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null,            
    SQLiteDatabase.OPEN_READONLY);
    }catch(SQLiteException e){
        //database does't exist yet.
    }
    if(checkDB != null){
        checkDB.close();
    }
    return checkDB != null ? true : false;
    }

private void copyDataBase() throws IOException{
    InputStream myinput =               
     context.getApplicationContext().getAssets().open(DB_NAME);
    OutputStream myoutput = new FileOutputStream("/data/data/com.tracking 
     /databases/"+ context.getApplicationContext().getPackageName() +"/databases
     /tracking.sqlite");
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myinput.read(buffer)) > 0) {
        myoutput.write(buffer, 0, length);
    }

    myoutput.flush();
    myoutput.close();
    myinput.close();


  }

  public void openDataBase() throws SQLException{
      //Open the database
      String myPath = DB_PATH + DB_NAME;
      db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    }


    public synchronized void close() {
    if(db != null) db.close();
    db.close();
}

public void onCreate(SQLiteDatabase db) {}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
    }
这是我的database.java

   package com.joel.databases;

   //import com.google.android.maps.MapView;
   import com.joel.databases.R;
   import android.app.Activity;
   import android.os.Bundle;
   import java.io.IOException;
   import android.app.Dialog;
   import android.app.ListActivity;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.os.AsyncTask;
   import android.os.Bundle;
   import android.view.View;
   import android.widget.AdapterView;
   import android.widget.ArrayAdapter;
   import android.widget.Button;
   import android.widget.ListView;
   import android.widget.Toast;
   import android.widget.AdapterView.OnItemClickListener;
   import android.database.Cursor;

    public class databases extends Activity {
    /** Called when the activity is first created. */
private Button cari;
private databases this_class = this;



    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    DBAdapter db = new DBAdapter(this); 
    db.openDataBase();

    cari = (Button) findViewById(R.id.cari);
     // cari.setOnClickListener(new Button.OnClickListener(){
    //public void onClick(View v){
    InitDatabase();
    }



     public void InitDatabase() {
     AsyncTask<String, Void, String> InitDB = new AsyncTask<String, Void, String>() {
        Dialog progress = null;
        String msg;
        DBAdapter db_adapter;

        @Override
        protected void onPreExecute() {
            db_adapter = new DBAdapter(this_class);
            if (!db_adapter.checkDataBase())
            progress = ProgressDialog.show(this_class, "", "Installing 
         Database.\nPlease wait.");
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {
            try {
                db_adapter.createDataBase();
                msg = "Database successfully installed.";
            } catch (IOException ioe) {
                msg = "Database installation failed.";
            }
            return msg;
         }

          @Override
         protected void onPostExecute(String result) {
            super.onPostExecute(result);
            if (progress!=null) {
                progress.dismiss();
                Toast.makeText(getApplicationContext(), result, 
          Toast.LENGTH_SHORT).show();
             }
          }
         };
        InitDB.execute(new String());
         } 

         }
package com.joel.databases;
//导入com.google.android.maps.MapView;
导入com.joel.databases.R;
导入android.app.Activity;
导入android.os.Bundle;
导入java.io.IOException;
导入android.app.Dialog;
导入android.app.ListActivity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
导入android.database.Cursor;
公共类数据库扩展了活动{
/**在首次创建活动时调用*/
私人按钮卡;
私有数据库this_class=this;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBAdapter db=新的DBAdapter(此);
openDataBase();
cari=(按钮)findViewById(R.id.cari);
//cari.setOnClickListener(新建按钮.OnClickListener(){
//公共void onClick(视图v){
InitDatabase();
}
公共数据库(){
AsyncTask InitDB=新的AsyncTask(){
对话进度=空;
串味精;
DBAdapter db_适配器;
@凌驾
受保护的void onPreExecute(){
db_adapter=新的DBAdapter(这个类);
如果(!db_adapter.checkDataBase())
progress=ProgressDialog.show(该类为“,”安装
数据库。\n请稍候。“);
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
db_adapter.createDataBase();
msg=“数据库已成功安装。”;
}捕获(ioe异常ioe){
msg=“数据库安装失败。”;
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
如果(进度!=null){
进步。解散();
Toast.makeText(getApplicationContext(),result,
吐司。长度(短)。show();
}
}
};
execute(新字符串());
} 
}
使用

而不是

 OutputStream myoutput = new FileOutputStream("/data/data/com.tracking 
     /databases/"+ context.getApplicationContext().getPackageName() +"/databases
     /tracking.sqlite");
使用

而不是

 OutputStream myoutput = new FileOutputStream("/data/data/com.tracking 
     /databases/"+ context.getApplicationContext().getPackageName() +"/databases
     /tracking.sqlite");

看看这个链接


它解释了如何在Android应用程序中使用和访问独立的预加载数据库。

查看此链接


它解释了如何在Android应用程序中使用和访问一个独立的预加载数据库。

很明显,你想要达到的目标远远超出了你的水平-我真诚而不想要的建议是:花些时间在一些更简单的平台上编程简单的事情。这样,你就可以在不需要任何人帮助的情况下继续前进.独自前行是唯一能让你学习的东西

然后学习一些Java(只是基础知识,但是语言和相关知识,比如命名约定)


然后回到Android。突然之间,所有的教程和api文档都开始对你有意义了。

很明显,你想要达到的目标远远超出了你的水平——我真诚而不想要的建议是:花点时间在更简单的平台上编程简单的东西。这样你就可以在不需要别人帮助的情况下继续前进.独自前行是唯一能让你学习的东西

然后学习一些Java(只是基础知识,但是语言和相关知识,比如命名约定)


然后回到Android。突然,所有教程和api文档都开始对您有意义了。

请发布任何logcat错误。您是否有扩展到SQLiteOpenHelper的类?因为SQLiteOpenHelper允许您创建实际数据库、查询它们等等。请查看Android应用程序开发下面链接上的Android教程从Android应用程序中的Sqlite检索数据的开发教程请发布任何logcat错误。您是否有扩展到SQLiteOpenHelper的类?因为SQLiteOpenHelper允许您创建实际数据库、查询它们等等。请查看Android应用程序开发教程下面链接上的Android教程,从Sqli检索数据Android应用程序中的te