android数据库的查询有关问题

android数据库的查询问题android的数据库练习,根据资料写下了如下代码,但是却一直不成功:Java codepackage

android数据库的查询问题

android的数据库练习,根据资料写下了如下代码,但是却一直不成功:

Java code
package barry.android.db;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteCursorDriver;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteQuery;import android.os.Bundle;public class Demo03Activity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        /*创建数据库*/        SQLiteDatabase myDB = this.openOrCreateDatabase("db.db",                MODE_PRIVATE, new CursorFactory() {                    @Override                    public Cursor newCursor(SQLiteDatabase db,                            SQLiteCursorDriver masterQuery, String editTable,                            SQLiteQuery query) {                        return null;                    }                });                /*创建表*/        String createTableSql = "CREATE TABLE test(_idd INTEGER primary key autoincrement, number text)";        myDB.execSQL(createTableSql);                /*插入数据*/        String insertDataSql = "INSERT INTO test(_idd,number) VALUES(1,678)";        myDB.execSQL(insertDataSql);                /*查询*/        Cursor cursor = myDB.rawQuery("SELECT * FROM test", null);                if(cursor==null){            System.out.println("NULLLLLLLLLLLLLLLLLL");        }else{            if(cursor.moveToFirst()){                System.out.println(cursor.toString());                System.out.println(cursor.getInt(0));            }        }                /*删除数据库*/        this.deleteDatabase("db.db");    }    }


主要是查询的问题~ 创建数据库、创建表、插入数据应该是成功了的,但是查询却一直查不到结果~~
或许是我查询的方法不对?
望大牛指点…… 不胜感激!




[解决办法]
number是关键字,数据库字段尽量用两个单词。
[解决办法]
android规定数据库中的表必须有一个字段叫做_id,而且必须作为主键。你检查一遍你的建表语句是不是有问题。另外,这样创建的数据库太不专业了,android提供了SQLiteOpenHelper类,很好的管理了android数据库的增删查改操作,建议用此类管理你的数据库~
[解决办法]
这是我做CRUD的例子,你参考下
Java code
import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class AndroidsqlitedbActivity extends Activity {    /** Called when the activity is first created. */    private Button create;    private Button insert;    private Button update;    private Button query;    private Button delete;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        create = (Button)findViewById(R.id.create);        insert = (Button)findViewById(R.id.insert);        update = (Button)findViewById(R.id.update);        query = (Button)findViewById(R.id.query);        delete = (Button)findViewById(R.id.delete);                create.setOnClickListener(new CreateListener());        insert.setOnClickListener(new InsertListener());        update.setOnClickListener(new UpdateListener());        query.setOnClickListener(new QueryListener());        delete.setOnClickListener(new DeleteListener());    }                @Override    protected void onDestroy() {        super.onDestroy();        //释放和数据库的连接      //  db.close();    }    /**     * 创建数据库     * @author Owner     *     */    class CreateListener implements OnClickListener {        @Override        public void onClick(View v) {            DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");            dbHelper.getReadableDatabase();        }            }        /**     * 插入一条记录     * @author Owner     *     */    class InsertListener implements OnClickListener {        @Override        public void onClick(View v) {            DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");            ContentValues values = new ContentValues();            values.put("id", 1);            values.put("name", "LiXiaoLong");            values.put("password", "12345");            SQLiteDatabase db = dbHelper.getWritableDatabase();            db.insert("user", null, values);        }    }        /**     * 更新一条记录     * @author Owner     *     */    class UpdateListener implements OnClickListener {        @Override        public void onClick(View v) {            ContentValues values = new ContentValues();            values.put("name", "ZhangXiaoLong");            DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");            SQLiteDatabase db = dbHelper.getWritableDatabase();            db.update("user", values, "id=?", new String[]{"1"});        }            }        /**     * 查询记录     * @author Owner     *     */    class QueryListener implements OnClickListener {        @Override        public void onClick(View v) {            DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");            SQLiteDatabase db = dbHelper.getReadableDatabase();            Cursor cursor = db.query("user", new String[]{"id","name","password"}, "id=?", new String[]{"1"}, null,null,null);                        while(cursor.moveToNext()) {                String name = cursor.getString(cursor.getColumnIndex("name"));                String password = cursor.getString(cursor.getColumnIndex("password"));                System.out.println(" name: " + name + "password: " + password);            }                }            }        /**     * 查询一条记录     * @author Owner     *     */    class DeleteListener implements OnClickListener {        @Override        public void onClick(View v) {            DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");            SQLiteDatabase db = dbHelper.getWritableDatabase();            db.delete("user", "id=?", new String[]{"1"});        }            }} 


[解决办法]
不好意思,下面的说法不准确,可以没有_id,但是Android SDK 推荐的方法是:为了统一,在提供数据表字段中包含一个_id。

探讨

引用:

android规定数据库中的表必须有一个字段叫做_id,而且必须作为主键。你检查一遍你的建表语句是不是有问题。另外,这样创建的数据库太不专业了,android提供了SQLiteOpenHelper类,很好的管理了android数据库的增删查改操作,建议用此类管理你的数据库~

谢谢,用SQLiteOpenHelper成功了~
但是我的表中没……

[解决办法]
_id不是必须的。
但是用adaper等进行数据库操作的时候,是必须的。否则有些功能方法无法使用