【问题标题】:Is there any way to write "null" value from database to csv file?有没有办法将“空”值从数据库写入 csv 文件?
【发布时间】:2019-09-18 08:50:44
【问题描述】:

我的第一个问题是 - BufferedWriter 是否能够将空值写入文件? 就我而言,我正在尝试将每个数据从数据库导出到 csv 文件。数据库中有空值。我可以使用 BufferedWriter 导出没有空值的数据库。但不适用于空值。我的问题是,是否可以使用我当前的代码导出包含 null 的数据库?这是代码。

这是导出类-

    private fun export() {
    try {
        db=DataBaseHelper(this)
        val db=this.openOrCreateDatabase(REAL_DATABASE, Context.MODE_PRIVATE, null)
        val selectQuery=
            "Select T.date,T.location, M.barcode,M.onhand_qty,T.scanned_qty,(M.onhand_qty-T.scanned_qty) as 'DIFFERENCE' from Master M Left Outer Join transaction_table T  On M.barcode = T.barcode1  "
        val cursor=db.rawQuery(selectQuery, null)
        var rowcount: Int=0
        var colcount: Int=0

                val saveFile="/sdcard/Download/original.csv"
                val fw=FileWriter(saveFile)

                val bw=BufferedWriter(fw)
                rowcount=cursor.getCount()
                colcount=cursor.getColumnCount()

                if (rowcount>0) {
                    cursor!!.moveToFirst()

                    for (i in 0 until colcount) {
                        if (i != colcount - 1) {

                            bw.write(cursor!!.getColumnName(i) + ",")

                        } else {

                            bw.write(cursor!!.getColumnName(i))
                        }
                    }
                    bw.newLine()

                    for (i in 0 until rowcount) {
                        cursor!!.moveToPosition(i)

                        for (j in 0 until colcount) {
                            if (j != colcount - 1)
                                bw.write(cursor!!.getString(j) + ",")
                            else
                                bw.write(cursor!!.getString(j))//This is where I get the error message
                        }
                        bw.newLine()
                    }
                    bw.flush()
                }

    } catch (ex: Exception) {
        ex.printStackTrace()

    } finally {

    }

}

这是错误信息-

    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

【问题讨论】:

  • 你不能只检查 null 并相应地处理它吗?例如一个空字符串,字符串“null”?
  • 我应该如何检查和处理?你能提供一些参考资料吗?
  • 这取决于您将如何在项目的其余部分中使用数据。什么对您的用例更好? “”还是“空”?
  • 在我的情况下,最好检查“null”。

标签: android sqlite kotlin bufferedwriter


【解决方案1】:

就这样做

val s = cursor!!.getString(j)
    if(s == null)
        bw.write("whatever string value you want here")
    else
        bw.write(s)

【讨论】:

  • 这就是我真正想要的。就在现场。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2016-02-18
相关资源
最近更新 更多