2 sinat 22315343 sinat_22315343 于 2014.12.20 16:34 提问

脚标越界求助,调了好久,还请路过大神顺带帮解决。。。

代码如下
package com.example.datebase;

import java.util.ArrayList;

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

public class DBHelper {
private static final String DATABASE_NAME = "";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "student";
private static final String[] COLUMNS = { "id", "name", "score" };
private String sql = "";
private DBOpenHelper helper;
private SQLiteDatabase db;

public DBHelper(Context context) {

    sql = "create table" + TABLE_NAME + "(" + COLUMNS[0]
            + " integer primary key," + COLUMNS[1] + " varchar(50),"
            + COLUMNS[2] + " integer);";
    helper = new DBOpenHelper(context, DATABASE_NAME, DATABASE_VERSION,
            TABLE_NAME, sql);

    db = helper.getWritableDatabase();

}

public void insert(Student data) {
    ContentValues values = new ContentValues();
    values.put(COLUMNS[0], data.getId());
    values.put(COLUMNS[1], data.getName());
    values.put(COLUMNS[2], data.getScore());
    db.insert(TABLE_NAME, null, values);

}

public ArrayList<Student> find() {
    ArrayList<Student> list = new ArrayList<Student>();
    Student stu = null;

    Cursor cursor = db.query(TABLE_NAME, COLUMNS, null, null, null, null,
            null);

    while (cursor.moveToNext()) {
        stu = new Student();
        stu.setId(cursor.getInt(0));
        stu.setName(cursor.getString(1));
        stu.setScore(cursor.getInt(2));
        list.add(stu);
    }
    cursor.close();

    return list;

}

}

package com.example.datebase;

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

public class DBOpenHelper extends SQLiteOpenHelper {

private String CREATE_TABLE = "";
private String tableName = "";

public DBOpenHelper(Context context, String dbName, int dbVersion,
        String tableName, String sql) {
    super(context, dbName, null, dbVersion);
    // TODO Auto-generated constructor stub
    CREATE_TABLE = sql;

    this.tableName = tableName;

}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(CREATE_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("drop table if exists" + tableName);
    onCreate(db);

}

}

package com.example.datebase;

import java.util.ArrayList;

import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
private EditText id, name, score, list;
private Button save, read;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    id = (EditText) findViewById(R.id.editText1);
    name = (EditText) findViewById(R.id.editText2);
    score = (EditText) findViewById(R.id.editText3);
    save = (Button) findViewById(R.id.button1);
    read = (Button) findViewById(R.id.button2);
    list = (EditText) findViewById(R.id.editText4);
    save.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Student info = null;
            DBHelper helper = new DBHelper(MainActivity.this);// 这句有问题
            info = new Student();
            info.setId(Integer.parseInt(id.getText().toString()));
            info.setName(name.getText().toString());
            info.setScore(Integer.parseInt(score.getText().toString()));
            helper.insert(info);
            id.setText("");
            name.setText("");
            score.setText("");
            Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT)
                    .show();

        }
    });
    read.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            list.setText("");
            DBHelper helper = new DBHelper(MainActivity.this);
            ArrayList<Student> Stulist = helper.find();
            for (Student info : Stulist) {
                list.setText(list.getText().toString() + info.getId() + ""
                        + info.getName() + "" + info.getScore() + "\n");
            }

        }
    });

4个回答

sinat_22315343
sinat_22315343   2014.12.20 16:38

一般没人回答吗?

bdmh
bdmh   Ds   Rxr 2014.12.20 16:43

我去,你想干嘛,知道是越界,自己打个断点,不会调试吗

sinat_22315343
sinat_22315343 打过了 运行到源码就不行了
3 年多之前 回复
u013337963
u013337963   2014.12.20 16:52

自己先打断电一步一步的调试吧

sinat_22315343
sinat_22315343 打过了 运行到源码就不行了
3 年多之前 回复
sinat_22315343
sinat_22315343 打过了 运行到源码就不行了
3 年多之前 回复
xingjunfeng1982
xingjunfeng1982   2014.12.20 20:56

degug进入到DBHelper类里,看是sql、helper 、db中哪一行报的错,观察下String[] COLUMNS的状态

话说回来,你好歹也贴个报错的日志吧,你这样光贴个代码让人怎么帮你啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
安卓中一些常见异常总结(空指针,脚标越界)
1.脚标越界异常(indexOutOfException): (1)image.setImageResource(list.get(position)%list.size()); 角标是5,长度也是5 正解:image.setImageResource(list.get(position%list.size())); (2)for(int i=0;i 角标和长度一样, 正解:for(i
ViewPager数组角标越界异常 java.lang.IndexOutOfBoundsException
数量明明是对的,但是还是会报 数组角标越界异常 后来我就设置了 mViewPager.setOffscreenPageLimit(mPhotoList.size()); 一次性加载出来,对于图片少的可以用,图片多的就不行了..
Numberpicker 数组角标越界问题
由于近期项目中要是用三级联动,所以选择了Numberpicker来做。但是做到一半发现numberpicker老是出现数组角标越界问题。经过查找资料总有解决了,废话到此!下面看结局方法! 解决方案一  1、当前NumberPicker的最大值大于数组大小时,先setMaxValue再setDisplayedValues。  2、当前NumberPicker的最大值小于数组大小时,
java 数组下标越界异常(ArrayIndexOutOfBoundsException)
java 数组下标越界异常(ArrayIndexOutOfBoundsException) java 数组下标越界异常(ArrayIndexOutOfBoundsException)
java数组下标越界的问题
java数组下标越界的问题: 最近一直出现这类问题:数组下标越界 举例说明: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at day07.PaiXu.get3max(RankDemo2.java:15) at day07.RankDemo2.main(RankDemo2.java:5
安卓listview两个类型条目的复用,总是报数组越界Android listview ArrayIndexOutOfBoundsException问题
我在使用listview两个类型条目复用的时候,出现来数组越界的异常,开始的时候我以为是数据传入的问题。浪费了我好久的时间来查找数据处理的逻辑。但是一直报错。后来在网上搜索问题才发现。 在list有多个条目的时候,adapter需要重写getItemViewType()和getViewTypeCount()两个方法。 getViewTypeCount()就是adapter条目的类型数量, 重
求助 路过的大神给个思路
在android应用运行时,如何让后台进程,服务等变得小一些。 如: 360手机助手      11Mb 360安全卫士      33Mb 通讯录                 5.4Mb 信息                     6.7Mb 我本人的应用     100Mb 怎么才能让我自己的应用变得小一些那? 从哪里入手那?
[求助]评标办法[求助]评标办法[求助]评标办法
[求助]评标办法[求助]评标办法[求助]评标办法[求助]评标办法[求助]评标办法[求助]评标办法
ListView多布局展示 异常 数组下标越界
ListView多布局展示用处很多 该异常如下: 这是怎么回事呢? 具体代码如下: public static final int TYPE_MALE = 1; public static final int TYPE_FEMALE = 2; @Override public int getViewTypeCount() { return 2;
android studio数据下标越界问题
public class TrendGraphView extends View { /**  * 趋势图的高度  */ private int viewHeight; /**  * 趋势图的宽度  */ private int viewWidth; /**  * 最低温度  */ private int minTemp; /**  * 最高温度  *