GVKun编程网logo

如何获取Android SQL lite中数据库中存在的所有表的名称(android获取数据库数据)

22

想了解如何获取AndroidSQLlite中数据库中存在的所有表的名称的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于android获取数据库数据的相关问题,此外,我们还将为您介绍关于and

想了解如何获取Android SQL lite中数据库中存在的所有表的名称的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于android获取数据库数据的相关问题,此外,我们还将为您介绍关于android – 从sqlite数据库中删除所有表、android – 从SQLite数据库获取某一点周围的所有项目、android – 如何从库中存储SQLite数据库中的图像、android – 如何在按钮的点击事件中在sqlite数据库中存储图像?的新知识。

本文目录一览:

如何获取Android SQL lite中数据库中存在的所有表的名称(android获取数据库数据)

如何获取Android SQL lite中数据库中存在的所有表的名称(android获取数据库数据)

我无法找到一种从 android中的数据库获取/转储表名的方法.我知道:查询

SELECT * 
  FROM sqlite_master

上面的语句会生成一个指向所有数据库/视图/表的元数据的游标.但是如何在我的数据库中获取我创建的所有表的名称?

解决方法

如果要检索数组中的信息(或任何可以遍历字符串的结构),可以创建如下方法:

public String[] getdbnames(){
    String[] result;
    try {
        StringBuilder sb = new StringBuilder();
        sb.append("SELECT name FROM sqlite_master "); 
        sb.append("WHERE type IN (''table'',''view'') AND name NOT LIKE ''sqlite_%'' ");
        sb.append("UNION ALL ");
        sb.append("SELECT name FROM sqlite_temp_master "); 
        sb.append("WHERE type IN (''table'',''view'') ");
        sb.append("ORDER BY 1");

        Cursor c = _db.rawQuery(sb.toString(),null);
        c.movetoFirst();

        result = new String[c.getCount()];
        int i = 0;
        while (c.movetoNext()) {
            result[i]= c.getString(c.getColumnIndex("name"));
            i++;
        }
        c.close();
    }
    catch(sqliteException e){
        Log.e("OOPS",e);
    }
    return result;
}

android – 从sqlite数据库中删除所有表

android – 从sqlite数据库中删除所有表

我做了很多研究,无法找到合适的方法来删除sqlite数据库中的所有表.最后,我做了一个代码来从数据库中获取所有表名,我尝试逐个使用检索到的表名删除表.它没有用.

请建议我从数据库中删除所有表的方法.

这是我使用的代码:

public void deleteall(){
    sqliteDatabase db = this.getWritableDatabase();
    Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
    do
    {
        db.delete(c.getString(0),null,null);
    }while (c.movetoNext());
}

按钮单击时调用函数deleteall(),其代码如下:

public void ButtonClick(View view)
{
    String Button_text;
    Button_text = ((Button) view).getText().toString();

    if(Button_text.equals("Delete Database"))
    {
        DatabaseHelper a = new DatabaseHelper(this);
        a.deleteall();
        Toast.makeText(getApplicationContext(), "Database Deleted Succesfully!", Toast.LENGTH_SHORT).show();
    }}

解决方法:

使用DROP TABLE:

// query to obtain the names of all tables in your database
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
List<String> tables = new ArrayList<>();

// iterate over the result set, adding every table name to a list
while (c.movetoNext()) {
    tables.add(c.getString(0));
}

// call DROP TABLE on every table name
for (String table : tables) {
    String dropQuery = "DROP TABLE IF EXISTS " + table;
    db.execsql(dropQuery);
}

android – 从SQLite数据库获取某一点周围的所有项目

android – 从SQLite数据库获取某一点周围的所有项目

我有一个完整的地图位置(纬度,经度)的数据库,有没有办法我可以做一个SQL查询返回我在某个位置周围的所有点?

现在我基本上抓住数据库中的所有内容并循环遍历每个数据库并使用查看距离

Location.distanceBetween(startPoint.latitude, startPoint.longitude,endPoint.latitude,endPoint.longitude, results);

并保持在设定距离内的项目,但可能有很多要点循环.

那么无论如何在sql语句中执行此操作?

解决方法:

您可以使用WHERE子句表达式来过滤距离原点(x0,y0)的角距离r.由于sqlite没有平方根函数,因此您必须使用平方距离:

SELECT ... FROM ...
    WHERE (Latitude-x0)*(Latitude-x0) + (Longitude-y0)*(Longitude-y0) < r*r;

唯一不适合的地方是靠近两极或本初子午线.它也是球体的平面近似,因此它仅适用于非常小的r值.最后,它平均地缩放纬度和经度,因此所选区域看起来越来越椭圆,原点距离赤道越远.

您必须将线性距离(例如,“30米内”)转换为纬度/经度差异.这是一个相当复杂的主题,因为地球不是一个完美的球体.但是,对于粗略计算,您可以使用赤道上1海里= 1852米=经度1弧分的近似值.由于当纬度远离赤道时经度线变得更近,因此您需要使用一些触发来确定在给定纬度使用的r值.有关此问题的详细信息,请参阅this thread或this one,或在网络上搜索“将米转换为纬度经度”.

android – 如何从库中存储SQLite数据库中的图像

android – 如何从库中存储SQLite数据库中的图像

我已尝试此代码将图像从库上传到我的应用程序中的sqllite数据库,但当我的应用程序尝试打开库时,它会强制关闭错误,我不知道是什么问题.帮助我和thanx在高级

public class ImagggggggActivity extends Activity { 

    private static final int SELECT_PICTURE = 1;
    private String selectedImagePath; 
    private ImageView img; 

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);  

         ((Button) findViewById(R.id.button1)) 
         .setonClickListener(new OnClickListener() { 

             public void onClick(View arg0) { 

                 // in onCreate or any event where your want the user to 
                 // select a file 
                 Intent intent = new Intent(); 
                 intent.setType("image/*"); 
                 intent.setAction(Intent.ACTION_GET_CONTENT); 
                 startActivityForResult(Intent.createChooser(intent, 
                         "Select Picture"), SELECT_PICTURE); 
             } 
         }); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
 if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
         Uri selectedImageUri = data.getData(); 
         selectedImagePath = getPath(selectedImageUri); 
     } 
 } 
} 

public String getPath(Uri uri) { 
 String[] projection = { MediaStore.Images.Media.DATA }; 
 Cursor cursor = managedQuery(uri, projection, null, null, null); 
 int column_index = cursor 
         .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
 cursor.movetoFirst(); 
 return cursor.getString(column_index); 
}}

解决方法:

通过按钮单击导入表单设备

Intent sdintent = new Intent(Intent.ACTION_PICK);
sdintent.setType("image/*");
startActivityForResult(sdintent, SD_REQUEST);

获取图像表单SD卡

if (requestCode == SD_REQUEST) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };

Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
cursor.movetoFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();

Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);

testimage.setimageBitmap(yourSelectedImage);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
byteArray = stream.toByteArray();
}

保存图片

DatabaseAdapter dbHelper = new DatabaseAdapter(Profiles.this);

       dbHelper.open();
       dbHelper.createuserProfiles( byteArray);
       dbHelper.close();

在DatabaseAdapter.java中没有

限定

  public static final String U_PIC = "picture";

然后

private long createuserTableContentValues(long id,byte[] byteImage) {
        ContentValues values = new ContentValues();
        values.put(ID, id);
        values.put(U_PIC, byteImage);
return database.insert(IMAGE_INSERT, null, values);
}

我想这可能对你有帮助…..

其他资源:
http://www.helloandroid.com/tutorials/store-imagesfiles-database

http://www.coderanch.com/t/507054/Android/Mobile/Storing-image-database

http://hi.baidu.com/_java/blog/item/971e142a13afe6305243c12f.html

http://www.tutorialforandroid.com/2009/10/how-to-insert-image-data-to-sqlite.html

android – 如何在按钮的点击事件中在sqlite数据库中存储图像?

android – 如何在按钮的点击事件中在sqlite数据库中存储图像?

如何在按钮的点击事件中将图像存储在sqlite数据库中?

解决方法:

package com.examples.aMysqL2;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.sqliteCursor;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


//Reading lines from a file
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import org.apache.http.util.ByteArrayBuffer;


public class aMysqL2Activity extends Activity implements OnClickListener
{
    protected static TextView textView;
    protected static ImageView bmImage;
    protected Button start;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        bmImage = (ImageView)findViewById(R.id.imageView1);
        textView = (TextView) findViewById(R.id.textView1);

        start = (Button) findViewById(R.id.button1);
        start.setonClickListener(this); 

    DownloadFile();


    }
    // /data/data/<package_name>/databases  -путь к базе данных по умолчанию
    // "/data/data/com.examples.aMysqL2/databases/MyDB.db" //-путь к базе данных по умолчанию
    //  "/sdcard/Nick/MyDB.db"
    //  "/mnt/sdcard/Nick/MyDB.db"
    /// Android/data/<package_name>/files/
    public void onClick(View v) 
    {
     sqliteDatabase myDb;       
     String MysqL;
     int icount;
     byte[] byteImage1 = null;
     byte[] byteImage2 = null;
       MysqL="create table emp1(_id INTEGER primary key autoincrement, fio TEXT not null, picture BLOB);";
       myDb = openorCreateDatabase("/sdcard/Nick/MyWeatherDB.db", Context.MODE_PRIVATE, null);
  //     myDb.execsql(MysqL);
  String s=myDb.getPath();
  textView.append("\r\n" + s+"\r\n");       
       myDb.execsql("delete from emp1");
       ContentValues newValues = new ContentValues();
    newValues.put("fio", "Иванов Петр Сергеевич");

 /////////// insert picture to blob field ///////////////////// 
    try
    {
    FileInputStream instream = new FileInputStream("/sdcard/Nick/weather.png"); 
    BufferedInputStream bif = new BufferedInputStream(instream); 
    byteImage1 = new byte[bif.available()]; 
    bif.read(byteImage1); 
textView.append("\r\n" + byteImage1.length+"\r\n"); 
    newValues.put("picture", byteImage1); 

    long ret = myDb.insert("emp1", null, newValues); 
    if(ret<0) textView.append("\r\n!!! Error add blob filed!!!\r\n");
    } catch (IOException e) 
    {
        textView.append("\r\n!!! Error: " + e+"!!!\r\n");   
    }

////////////Read data ////////////////////////////  
Cursor cur = myDb.query("emp1",null, null, null, null, null, null);
    cur.movetoFirst();
    while (cur.isAfterLast() == false)
    {
        textView.append("\r\n" + cur.getString(1)+"\r\n");
        cur.movetoNext();
    }
///////Read data from blob field////////////////////
    cur.movetoFirst();
    byteImage2=cur.getBlob(cur.getColumnIndex("picture")); // ИМЕННО ТАК!!!
bmImage.setimageBitmap(BitmapFactory.decodeByteArray(byteImage2, 0, byteImage2.length));
    textView.append("\r\n" + byteImage2.length+"\r\n"); 
//////////////////////////    
    cur.close();
    myDb.close();
  }

    public void DownloadFile() 
    {   
      Bitmap bitmap1 = null;                    
      bitmap1 = BitmapFactory.decodeFile("/sdcard/Nick/Saranka.jpg"); //weather.png");
      bmImage.setimageBitmap(bitmap1);
    }


}

关于如何获取Android SQL lite中数据库中存在的所有表的名称android获取数据库数据的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于android – 从sqlite数据库中删除所有表、android – 从SQLite数据库获取某一点周围的所有项目、android – 如何从库中存储SQLite数据库中的图像、android – 如何在按钮的点击事件中在sqlite数据库中存储图像?的相关信息,请在本站寻找。

本文标签: