能否告訴我這段代碼有什麼問題。它運行但結果未列出。我只想要一個簡單的SQLiteDB運行測試來完成我的另一個項目。我認爲ArrayList使用有問題。使用ArrayList和ArrayAdapter的SQLite
public class MainActivity extends Activity {
String names;
ListView lvMain;
ArrayList<String> values;
ArrayAdapter<String> adapter;
DBHelper dbHelper;
EditText et;
Button btnAdd;
Button btnRead;
Button btnClear;
Button btnShow;
Cursor c;
int nameColIndex;
int idColIndex;
/**
* Called when the activity is first created.
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnRead = (Button) findViewById(R.id.btnRead);
btnClear = (Button) findViewById(R.id.btnClear);
btnShow = (Button) findViewById(R.id.btnShow);
dbHelper = new DBHelper(this);
lvMain = (ListView) findViewById(R.id.lvMain);
values = new ArrayList<String>();
}
public void onButtonClick(View v) {
ContentValues cv = new ContentValues();
String name = et.getText().toString();
SQLiteDatabase db = dbHelper.getWritableDatabase();
switch (v.getId()) {
case R.id.btnAdd:
cv.put("name", name);
// вставляем запись и получаем ее ID
long rowID = db.insert("mytable", null, cv);
break;
case R.id.btnRead:
// делаем запрос всех данных из таблицы mytable, получаем Cursor
c = db.query("mytable", null, null, null, null, null, null);
// ставим позицию курсора на первую строку выборки
// если в выборке нет строк, вернется false
if (c.moveToFirst()) {
// определяем номера столбцов по имени в выборке
idColIndex = c.getColumnIndex("id");
nameColIndex = c.getColumnIndex("name");
do {
// получаем значения по номерам столбцов
c.getInt(idColIndex);
names = c.getString(nameColIndex);
values.add(names);
// переход на следующую строку
// а если следующей нет (текущая - последняя), то false - выходим из цикла
} while (c.moveToNext());
} else {
c.close();
}
break;
case R.id.btnClear:
// удаляем все записи
int clearCount = db.delete("mytable", null, null);
break;
case R.id.btnShow:
break;
}
// закрываем подключение к БД
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, values);
lvMain.setAdapter(adapter);
dbHelper.close();
adapter.notifyDataSetChanged();
}
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
// конструктор суперкласса
super(context, "myDB", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// создаем таблицу с полями
db.execSQL("create table mytable ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "email text" + ");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}}
Here is main, may be I am missing something?
`<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
</TextView>
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<requestFocus>
</requestFocus>
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="Add">
</Button>
<Button
android:id="@+id/btnRead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="Read">
</Button>
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="Clear">
</Button>
<Button
android:id="@+id/btnShow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="Show">
</Button>
</LinearLayout>
<ListView
android:id="@+id/lvMain"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>`
我試過了,就像你建議的那樣。 Evene將DBHelper放入MainActivity中。當我按下添加時,應用程序崩潰。 – user1706819
我已經想通了。謝謝大家的時間和精力。 – user1706819
Sardor,ukam,rakhmat。 – user1706819