Java 将Sql数据放入数字数组
我有个问题。如何将SQL数据库中的数据放入数字数组。我想把它们放在图表中 我得到了这些命令的Java 将Sql数据放入数字数组,java,android,sql,arrays,eclipse,Java,Android,Sql,Arrays,Eclipse,我有个问题。如何将SQL数据库中的数据放入数字数组。我想把它们放在图表中 我得到了这些命令的NullPointerException Number[] series2Numbers={s1nInt[1]}; 这是我的全部代码 openDB(); Cursor c = myDb.getSpalte(); while (c.moveToPrevious()) { s1nInt[i] = c.getInt(1); i++; c.moveToP
NullPointerException
Number[] series2Numbers={s1nInt[1]};
这是我的全部代码
openDB();
Cursor c = myDb.getSpalte();
while (c.moveToPrevious())
{
s1nInt[i] = c.getInt(1);
i++;
c.moveToPrevious();
}
c.close();
closeDB();
Number[] series2Numbers={s1nInt[1]};
这是我的例外:
Graph.onStart() line: 85
Graph(Fragment).performStart() line: 1801
FragmentManagerImpl.moveToState(Fragment, int, int, int, boolean) line: 937
FragmentManagerImpl.moveToState(int, int, int, boolean) line: 1106
BackStackRecord.run() line: 690
FragmentManagerImpl.execPendingActions() line: 1571
FragmentManagerImpl$1.run() line: 447
Handler.handleCallback(Message) line: 733
Handler.dispatchMessage(Message) line: 95
我的getSpalte()
我需要这个阵列:
XYSeries series1 = new SimpleXYSeries(
Arrays.asList(series1Numbers), // SimpleXYSeries takes a List so turn our array into a List
SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, // Y_VALS_ONLY means use the element index as the x value
"Series1"); // Set the display title of the series
s1nInt
在行中为null
Number[] series2Numbers={s1nInt[1]};
也许您从未在某个地方初始化s1nInt
或将其设置为null
。这是该行中唯一可以生成NullPointerException
的部分
这也意味着c.moveToPrevious()
失败
从api文件:
如果光标已经在结果集中的第一个条目之前,此方法将返回false
也许您也必须将moveToPrevious()
更改为moveToNext()
。(光标位于查询后第一个条目之前的位置)
在每个循环迭代中,您还可以移动光标两次。这样,您只能得到奇数行或偶数行
更新
在对问题进行最新编辑之后,您似乎需要一个
列表来显示您的数据库查询(在getSpalte()
中)。我想myDb属于您自己的类型,因为它有一个名为“getSpalte()”的方法。同时请包括查询表的结构。乍一看,s1nInt
数组的大小似乎小于2。@Michael:乍一看,您会发现这将产生一个ArrayIndexOutOfBoundsException
而不是NPE。看起来结果只有一列,但是。@fabian你是对的。。抱歉..我收到这些异常06-28 12:00:26.956:E/CursorWindow(5510):无法从包含3行1列的CursorWindow中读取第1行第1列代码>@user3779128:索引是从零开始的,这意味着列1位于索引0,而不是索引1。(请参阅)嗯,我如何才能更改他这样做?@user3779128:我不确定我是否正确理解了该注释(“他”是谁),但如果你想修复该错误,应该将c.getInt(1)
更改为c.getInt(0)
。嗯。但我没有帮助
Number[] series2Numbers={s1nInt[1]};
public Cursor getSpalte(){
String where= null;
String Order = "_id DESC";
Cursor c = db.query(true, DATABASE_TABLE, KEY_KALOA, // hope KEY_KALOA is guarantied to be correct here
where, null, null, null, Order, null);
return c;
}
openDB();
Cursor c = myDb.getSpalte();
List<Integer> valueList = new ArrayList<Integer>(c.getCount());
while (c.moveToNext()) {
valueList.add(c.getInt(0)); // assuming the first column is of type INT
}
c.close();
closeDB();
XYSeries series1 = new SimpleXYSeries(
valueList,
SimpleXYSeries.ArrayFormat.Y_VALS_ONLY,
"Series1");