【发布时间】: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