Android 数组在SQLite中未转换为字符串
我试图从SQLite中删除一个值,并从数组中检索要删除的值 问题是:当我在delete语句中使用值时,它是以数组格式而不是字符串格式显示的 代码: 阵列畸变 ArrayList a=新的ArrayList(); 上面的代码populatestock.a是数组 但logcat是这样的:Android 数组在SQLite中未转换为字符串,android,arrays,sqlite,Android,Arrays,Sqlite,我试图从SQLite中删除一个值,并从数组中检索要删除的值 问题是:当我在delete语句中使用值时,它是以数组格式而不是字符串格式显示的 代码: 阵列畸变 ArrayList a=新的ArrayList(); 上面的代码populatestock.a是数组 但logcat是这样的: Delete from abc Where StockName = '[sdfd]' 但我需要 Delete from abc Where StockName = 'sdfd' 如何解决此问题?使用此选项获取A
Delete from abc Where StockName = '[sdfd]'
但我需要
Delete from abc Where StockName = 'sdfd'
如何解决此问题?使用此选项获取
ArrayList
中第一个位置的内容(如果populatestocks.a是您的ArrayList):
在代码中:
deletestock="Delete from "+ st.tablename + " Where "+ st.column3 + " = '" + populatestocks.a.get(0) + "'";
tl;dr
populatestocks.a
应该是populatestocks.a[0]
您的问题意味着您有一个长度为1的数组,您希望字符串连接能够识别该数组并将其视为单个值。它不是这样工作的,因为即使只有一个元素,它仍然是一个数组,而不是一个值,并且被视为数组。您可以尝试以下方法:
deletestock="Delete from "+ st.tablename + " Where "+ st.column3 + " = '"+String.valueOf(populatestocks.a).subString(1, String.valueOf(populatestocks.a).length()-1)+"'";
这将返回您需要的内容。您正在声明一个ArrayList,因此需要使用get(index)而不是[] 因此,您的代码应该如下所示:
String.valueOf(populatestocks.a.get(0))
那么它应该是
String.valueOf(populatestocks.a[0])
谢谢您的回复,但是我在更改时遇到了这个错误表达式的类型必须是数组类型,但除了arg格式之外,它还解析为“
(从问题中很难找到正确答案-请提供更多上下文),请使用execSQL()
而不是rawQuery()
用于删除。同样的问题是,当我从数组中检索值时,我得到的值是[sdf]
,但我需要assdf
。。我怎样才能做到这一点谢谢你的回复,但我收到了这个错误表达式的类型必须是数组类型,但它已解析为
。这是我的数组declaration`ArrayList a=new ArrayList()`您使用的是数组列表
而不是数组
。我更新了我的帖子来解决这个问题。谢谢你的回答,但效果不太好:(03-11 15:10:39.733:E/AndroidRuntime(4851):java.lang.StringIndexOutOfBoundsException:length=6;regionStart=1;regionLength=-1 03-11 15:10:39.733:E/AndroidRuntime(4851):at java.lang.String.StartAndLength(String.java:583)03-11 15:10:39.733:E/AndroidRuntime(4851):在java.lang.String.substring(String.java:1464)中,在我使用数组的大小而不是字符串的大小之前,现在它可以工作了。这可以工作了……)你能告诉我整个逻辑是什么吗?我刚才使用了你得到的字符串作为结果,我得到一个子字符串,从位置1开始,在位置string.length()-1
结束。函数subString(start,end)
返回一个子字符串,从字符串的起始位置开始,到结束位置end-1结束。所以我只是从数组的位置1得到子字符串,直到数组的位置length()-1。在数组[asds]中,位置1是a
,位置长度()。清楚了吗?如果你有任何问题,请ask@Siva您使用的是集合还是数组?我想两者都会打印相同的内容。ArrayList是一个集合,而不是数组。如果您正在使用的是populatestocks.a.get(0)
,请使用它。我的数组语法如下:ArrayList a=new ArrayList()代码>然后再说一遍,这不是一个数组。请不要称之为数组;这在Java中意味着其他东西。无论如何,如果您只有一个值,请执行populatestocks.a.get(0)
。
deletestock="Delete from "+ st.tablename + " Where "+ st.column3 + " = '"+String.valueOf(populatestocks.a).subString(1, String.valueOf(populatestocks.a).length()-1)+"'";
String.valueOf(populatestocks.a.get(0))