www.91084.com

GVKun编程网logo

将SQLite数据库导出到android中的csv文件

24

在这篇文章中,我们将带领您了解将SQLite数据库导出到android中的csv文件的全貌,同时,我们还将为您介绍有关android–从Sqlite检索数据并存储到CSV文件中、android–外部M

在这篇文章中,我们将带领您了解将SQLite数据库导出到android中的csv文件的全貌,同时,我们还将为您介绍有关android – 从Sqlite检索数据并存储到CSV文件中、android – 外部Micro Sdcard中的SQLite数据库、android – 将sqlite数据库从设备复制到PC、android – 将SQLite数据库发送到Web服务的知识,以帮助您更好地理解这个主题。

本文目录一览:

将SQLite数据库导出到android中的csv文件

将SQLite数据库导出到android中的csv文件

我试图将sqlite数据导出到android中的SD卡作为目录上的CSV文件.

所以我在下面尝试过这种方法,显然它只显示了这个文字:

数据库的第一个表
日期,项目,金额,币种

在我的DBHelper.java中,我已经定义了如下函数:

public boolean exportDatabase() {
        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());

        /**First of all we check if the external storage of the device is available for writing.
         * Remember that the external storage is not necessarily the sd card. Very often it is
         * the device storage.
         */
        String state = Environment.getExternalStorageState();
        if (!Environment.MEDIA_MOUNTED.equals(state)) {
            return false;
        }
        else {
            //We use the Download directory for saving our .csv file.
            File exportDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
            if (!exportDir.exists())
            {
                exportDir.mkdirs();
            }

            File file;
            PrintWriter printWriter = null;
            try
            {
                file = new File(exportDir, "MyCSVFile.csv");
                file.createNewFile();
                printWriter = new PrintWriter(new FileWriter(file));

                /**This is our database connector class that reads the data from the database.
                 * The code of this class is omitted for brevity.
                 */
                sqliteDatabase db = this.getReadableDatabase(); //open the database for reading

                /**Let's read the first table of the database.
                 * getFirstTable() is a method in our DBCOurDatabaseConnector class which retrieves a Cursor
                 * containing all records of the table (all fields).
                 * The code of this class is omitted for brevity.
                 */
                Cursor curCSV = db.rawQuery("select * from contacts", null);
                //Write the name of the table and the name of the columns (comma separated values) in the .csv file.
                printWriter.println("FirsT TABLE OF THE DATABASE");
                printWriter.println("DATE,ITEM,AMOUNT,CURRENCY");
                while(curCSV.movetoNext())
                {
                    Long date = curCSV.getLong(curCSV.getColumnIndex("date"));
                    String title = curCSV.getString(curCSV.getColumnIndex("title"));
                    Float amount = curCSV.getFloat(curCSV.getColumnIndex("amount"));
                    String description = curCSV.getString(curCSV.getColumnIndex("description"));

                    /**Create the line to write in the .csv file.
                     * We need a String where values are comma separated.
                     * The field date (Long) is formatted in a readable text. The amount field
                     * is converted into String.
                     */
                    String record = df.format(new Date(date)) + "," + title + "," + amount + "," + description;
                    printWriter.println(record); //write the record in the .csv file
                }

                curCSV.close();
                db.close();
            }

            catch(Exception exc) {
                //if there are any exceptions, return false
                return false;
            }
            finally {
                if(printWriter != null) printWriter.close();
            }

            //If there are no errors, return true.
            return true;
        }
    }
}

我的专栏是:

 public static final String DATABASE_NAME = "Mydbname.db";
 public static final String CONTACTS_TABLE_NAME = "contacts";
 public static final String CONTACTS_COLUMN_ID = "id";
 public static final String CONTACTS_COLUMN_TITLE = "title";
 public static final String CONTACTS_COLUMN_AMOUNT = "amount";
 public static final String CONTACTS_COLUMN_DESC = "description";

如果您需要更多代码,请与我们联系.

解决方法:

感谢您的建议,让我得到了这个答案:

private void exportDB() {

        DBHelper dbhelper = new DBHelper(getApplicationContext());
        File exportDir = new File(Environment.getExternalStorageDirectory(), "");
        if (!exportDir.exists())
        {
            exportDir.mkdirs();
        }

        File file = new File(exportDir, "csvname.csv");
        try
        {
            file.createNewFile();
            CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
            sqliteDatabase db = dbhelper.getReadableDatabase();
            Cursor curCSV = db.rawQuery("SELECT * FROM contacts",null);
            csvWrite.writeNext(curCSV.getColumnNames());
            while(curCSV.movetoNext())
            {
                //Which column you want to exprort
                String arrStr[] ={curCSV.getString(0),curCSV.getString(1), curCSV.getString(2)};
                csvWrite.writeNext(arrStr);
            }
            csvWrite.close();
            curCSV.close();
        }
        catch(Exception sqlEx)
        {
            Log.e("MainActivity", sqlEx.getMessage(), sqlEx);
        }
}

android – 从Sqlite检索数据并存储到CSV文件中

android – 从Sqlite检索数据并存储到CSV文件中

我试图从数据库返回数据并将其保存在SD卡中的CSV文件中并附加文件并通过电子邮件发送,这一切都很完美,数据在Excel上应该是这样的.

COLUMN A ……….. COLUMN B

123123232 ……….约翰

964803400 ……….史密斯

657484738 ……….麦克

我的问题是,当我打开Excel时,数据显示如下

COLUMN A ……….. COLUMN B

123123232 ……….

964803400 ……….

657484738 ……….

约翰

工匠

麦克风

这是代码Names.Java

dbUser.open();

                File root=null;     
             try {  
                    // check for SDcard   
                    root = Environment.getExternalStorageDirectory();                   
                    Log.i(TAG,"path.." +root.getAbsolutePath());  

                    //check sdcard permission  
                    if (root.canWrite()){  
                        File fileDir = new File(root.getAbsolutePath()+"/fun/");  
                        fileDir.mkdirs();  

                        Log.d("PATH",fileDir.toString());

                        File file= new File(fileDir, "itisfun.csv");  
                        FileWriter filewriter = new FileWriter(file);  
                        BufferedWriter out = new BufferedWriter(filewriter); 
                        String[] div = dbUser.getVname_Mnumber(sharedUsername1,product).toString().split(",");

                        Log.d(sharedUsername1, product);

                        Log.d("VVVVVVVVVV", dbUser.getVname_Mnumber(sharedUsername1,product).toString());

                        for (int i =0; i<div.length;i++)
                        out.write( div[i] +"\n" );

                        out.close();  
                    }  
                } catch (IOException e) {  
                    Log.e("ERROR:---", "Could not write file to SDCard" + e.getMessage());  
                }

这是我的DBadapter

public String getVname_Mnumber(String date , String Vname) throws sqlException {    

    String[] whereArgs = new String[]{date,Vname}; 

    Cursor mcursor = db.rawQuery("SELECT MeterNumber,vendorName FROM " + SCAN_TABLE + " WHERE  Date = ? AND vendorName = ? ",whereArgs);

    ArrayList<String> results = new ArrayList<String>();
    ArrayList<String> results1 = new ArrayList<String>();
    while (mcursor.movetoNext()) {
        results.add(mcursor.getString(0));
        results1.add(mcursor.getString(1));
    }

    return results + ","+ results1;

}

非常感谢你的帮助

解决方法:

您基本上创建了两个ArrayLists – 第一个只包含Cursor的第0列,第二个只包含第1列.然后返回所有第0列结果,后跟“,”,后跟第1列的所有结果.

尝试使用StringBuilder来完成整个过程.例…

StringBuilder sb = new StringBuilder();
while (mcursor.movetoNext()) {
    sb.append(mcursor.getString(0) + "," + mcursor.getString(1) + "\n");
}
return sb.toString();

android – 外部Micro Sdcard中的SQLite数据库

android – 外部Micro Sdcard中的SQLite数据库

我想知道.

我的标签中有一张外部微型SD卡.

我想在Micro SD卡中创建一个sqlite数据库.

public static final String  DATABASE_FILE_PATH = "/extSdCard";

我正在给我的外部微型SD卡路径,但错误显示.

Unable to open Database

是否可以在外部存储卡中创建数据库?

更新: –

public static final String  DATABASE_FILE_PATH = "/extSdCard";
    public static final String  DATABASE_NAME = "mytest";

public SDcardDatabase(final Context context) {
        super(context,DATABASE_FILE_PATH +  DATABASE_NAME, null, 1);
    }

解决方法:

我们可以通过这个给定的路径在外部SD卡中创建数据库.

"/mnt/externalSDcard/dbname"

详情请查看: –

SQLite Database in Samsung Tab2 (External Micro sd card)

https://android.stackexchange.com/questions/33182/why-is-the-sd-card-mounted-to-sdcard-external-sd-instead-of-sdcard-or-m

android – 将sqlite数据库从设备复制到PC

android – 将sqlite数据库从设备复制到PC

我有一个 android程序,它将其信息存储在sqlite数据库中.一旦设备通过USB插入,或者应该在程序本身中写入特殊功能以将db内容转储到/ sdcard目录下的文件中,是否可以将该db文件复制到PC?

谢谢

解决方法

您可以使用adb pull命令将风化设备中的文件读取到桌面,例如adb pull /data/data/com.foo.bar/databases/My Database

android – 将SQLite数据库发送到Web服务

android – 将SQLite数据库发送到Web服务

我有一个Android应用程序,它填充了许多纬度和经度的sqlite数据库.然后我需要将数据存储在外部sql Server数据库中.我遇到的问题是将该文件发送到Web服务.我找不到任何关于类应该如何看待db文件并将其存储在单独的sql Server数据库中的示例.这甚至是我应该接近我的问题的方式吗?

解决方法:

更好的方法是通过Web服务将实际的lat / long数据发送到db,而不是自己发送整个db文件.

这样做可以完成几件事:

>实施起来应该简单得多
>您不需要在服务器端支持sqlite,只需要支持客户端
>数据“设置”将立即可用于查询 – 而不是在可以使用之前需要从sqlite db文件中提取

编辑:您上传的频率和数量完全取决于您.您可以将其设置为用户激活或在某个时间间隔内以批量方式或一次一个上传最新数据,直到您更新为止.在任何一种情况下,您都可以使用时间戳跟踪需要上传的数据.

转移“批量”的一种简单方法是从sqlite数据库中提取需要保存的数据,并将其放入JSON或XML对象中,该对象将在服务器上解释为lat / long数据的集合.这会将整个上传放入单个Web服务调用,而不必循环遍历“最新”记录并为每个项目调用Web服务.

今天关于将SQLite数据库导出到android中的csv文件的分享就到这里,希望大家有所收获,若想了解更多关于android – 从Sqlite检索数据并存储到CSV文件中、android – 外部Micro Sdcard中的SQLite数据库、android – 将sqlite数据库从设备复制到PC、android – 将SQLite数据库发送到Web服务等相关知识,可以在本站进行查询。

本文标签: