阿里云国际站:android 项目将csv文件写入sqlite数据库 代码

以下是一个将 CSV 文件写入 SQLite 数据库的 Android 项目代码示例:

  1. 在您的 Android 项目的 build.gradle 文件中添加 SQLite 和 CSV 相关依赖项:
implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
implementation 'com.opencsv:opencsv:5.4'
  1. 创建一个名为 CsvDatabaseHelper 的辅助类,继承自 SQLiteAssetHelper 类:
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class CsvDatabaseHelper extends SQLiteAssetHelper {
    private static final String DATABASE_NAME = "database.db";
    private static final int DATABASE_VERSION = 1;

    public CsvDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        setForcedUpgrade();
    }
}
  1. 创建一个名为 CsvImporter 的类来读取 CSV 文件并将其写入 SQLite 数据库:
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import com.opencsv.CSVReader;

import java.io.FileReader;
import java.util.Arrays;

public class CsvImporter {
    private static final String CSV_FILE_PATH = "path/to/your/csv/file.csv";

    public static void importCSV(Context context) {
        CsvDatabaseHelper dbHelper = new CsvDatabaseHelper(context);
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        try {
            CSVReader reader = new CSVReader(new FileReader(CSV_FILE_PATH));
            String[] nextLine;
            String tableName = "your_table_name";
            String columns = "column1, column2, column3"; // 根据实际表结构修改
            String placeholders = "?, ?, ?"; // 根据实际表结构修改

            db.beginTransaction();
            SQLiteStatement statement = db.compileStatement(
                    "INSERT INTO " + tableName + " (" + columns + ") VALUES (" + placeholders + ")"
            );

            // 读取 CSV 文件中的每一行并插入到数据库中
            while ((nextLine = reader.readNext()) != null) {
                statement.clearBindings();
                for (int i = 0; i < nextLine.length; i++) {
                    statement.bindString(i + 1, nextLine[i]);
                }
                statement.execute();
            }

            db.setTransactionSuccessful();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            db.endTransaction();
            db.close();
        }
    }
}
  1. 在您的 Activity 或 Fragment 中调用 CsvImporter.importCSV(context) 方法来执行导入操作:
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class YourActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 调用 CsvImporter 类的 importCSV 方法来导入 CSV 数据到 SQLite 数据库
        CsvImporter.importCSV(this);
    }
}

请注意,您需要将 path/to/your/csv/file.csv 替换为您实际 CSV 文件的路径,并根据实际表结构修改表名、列名和占位符等信息。

希望以上代码能帮到您!如果您有任何更多的问题,请随时提问。

以下是一个示例代码,展示了如何将CSV文件写入SQLite数据库。请注意,你需要根据你的具体要求进行适当的修改和调整。

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class DBHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "mytable";
    private static final String COLUMN_NAME = "name";
    private static final String COLUMN_AGE = "age";
    private Context context;

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTableQuery = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_NAME + " TEXT, " + COLUMN_AGE + " INTEGER)";
        db.execSQL(createTableQuery);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public void insertCSVToDatabase() {
        SQLiteDatabase db = this.getWritableDatabase();
        InputStream inputStream = context.getResources().openRawResource(R.raw.csv_file); // 替换为你的CSV文件名称
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String line;
        try {
            while ((line = reader.readLine()) != null) {
                String[] values = line.split(",");
                ContentValues contentValues = new ContentValues();
                contentValues.put(COLUMN_NAME, values[0]);
                contentValues.put(COLUMN_AGE, Integer.parseInt(values[1]));
                db.insert(TABLE_NAME, null, contentValues);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        db.close();
    }
}

将上述代码中的mydatabase.db替换为你想要创建的数据库名称,mytable替换为你想要创建的表名称,nameage替换为你的CSV文件中列的名称。另外,你需要将CSV文件放置在res/raw目录下,并将其命名为csv_file.csv或者你自己的文件名,并在代码中相应地引用它(替换R.raw.csv_file部分)。

调用insertCSVToDatabase方法将会读取CSV文件的内容,并将每行数据插入SQLite数据库的表中。请确保在使用此代码之前已经创建好了SQLite数据库和表。

阿里云国际站:android 项目将csv文件写入sqlite数据库 代码

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/136729.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年2月3日 12:42
下一篇 2024年2月3日 12:52

相关推荐

  • 物联网为什么要用阿里云

    为啥要用阿里云主机而不用虚拟主机 这是有人给你提的建议吗?还是说你本身就是阿里云的工作人员  如果你本身就是阿里的人的话,这个问题不需要我来回答,肯定是要用阿里云;  如果是别人给你的建议的话,我来说两句,阿里云主机确实要比虚拟主机的功能方面以及操作性方面都要好一些,但是阿里云主机要比虚拟主机要贵很多,阿里云最便宜的58一个月,而寻虚拟主机有的一年才100块…

    2023年8月29日
    28300
  • 北京阿里云代理商:阿里网站防护解决方案

    阿里云的网站防护解决方案主要包括以下几个方面: WAF(Web应用防火墙):阿里云WAF可以对网站的入站和出站流量进行实时监控和检测,通过对HTTP和HTTPS协议中的恶意行为进行识别和阻断,有效防御Web应用被黑客攻击、数据泄露、敏感信息篡改等安全威胁。 DDoS攻击防护:阿里云的DDoS攻击防护能够实时监测和识别各类DDoS攻击,包括SYN Flood、…

    2023年12月14日
    28100
  • 腾讯云服务器和阿里云哪个好用些

    腾讯云服务器和阿里云都是国内知名的云计算服务提供商,具体哪个更好要看具体的需求和偏好。以下是一些对比: 功能和产品线:阿里云在全球范围内拥有更多的数据中心和更多的产品线,如ECS、RDS、OSS等。腾讯云则在游戏、音视频、金融等特定领域有更丰富的解决方案。 用户口碑:阿里云自发布以来一直占据国内云计算市场的主导地位,拥有更多的用户和更好的用户口碑。腾讯云在近…

    2023年9月16日
    27200
  • 株洲阿里云代理商:阿里云怎样使用

    阿里云是一家提供云计算服务的公司,为企业和个人用户提供弹性计算、云数据库、云存储、人工智能等服务。作为株洲地区的阿里云代理商,我们可以帮助您使用阿里云的方式和步骤如下: 注册阿里云账号:访问阿里云官网,点击“免费注册”按钮,填写相关信息完成账号注册。 选择产品和服务:根据您的需求选择阿里云提供的产品和服务,如ECS弹性计算、RDS云数据库、OSS对象存储等。…

    2024年1月3日
    28700
  • 淄博阿里云代理商:阿里云安全服务

    淄博阿里云代理商是一家提供阿里云安全服务的机构。阿里云安全服务包括多种产品和解决方案,旨在保护企业的云端数据和应用的安全。代理商可以为客户提供以下服务: 安全咨询:代理商可以为客户提供关于云安全的咨询和建议,并评估客户的安全需求。 安全解决方案:代理商可以根据客户的需求,设计并实施适合的安全解决方案,包括网络安全、身份认证、数据加密等。 安全设备和软件供应:…

    2024年1月12日
    25800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/