android数据库插入问题老是出错。新手。很急,在线等。谢谢大神了

public class MyDatabaseHelper extends SQLiteOpenHelper
{
final String CREATE_TABLE_SQL =
"create table dict(_id integer primary " +
"key autoincrement , word , detail)";
public MyDatabaseHelper(Context context, String name, int version)
{
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db)
{
// 第一次使用数据库时自动建表
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db
, int oldVersion, int newVersion)
{
System.out.println("--------onUpdate Called--------"
+ oldVersion + "--->" + newVersion);
}
}

 public class Dict extends Activity{
    MyDatabaseHelper dbHelper;
    Button insert = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        dbHelper = new MyDatabaseHelper(this , "myDict.db3",1);
        insert = (Button) findViewById(R.id.insert);

        insert.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String word = ((EditText)findViewById(R.id.word)).getText().toString();
                String detail = ((EditText)findViewById(R.id.detail)).getText().toString();
                insertData(dbHelper.getReadableDatabase(),"56465" ,"56165");


            }
        });
    }


    private void insertData(SQLiteDatabase db , String word , String detail){
        db.execSQL("insert into dict values(null,?,?)" , new String[] {word ,detail});
    }

}

4个回答

 insertData(dbHelper.getWritableDatabase(),"56465" ,"56165");不是getReadableDatabase
o0olike
pofy_zhu 嗯。学习了。。谢谢了。
5 年多之前 回复
danielinbiti
danielinbiti 回复o0olike: onCreate方法根据version也就是第三个参数只执行一次,后面如果version不变,则oncreate是不会执行的。估计你在oncreate里面还没添加代码的时候就执行过app,然后再在oncreate增加表结构创建
5 年多之前 回复
o0olike
pofy_zhu 谢谢您了。按照您给的方法解决了问题。能给我解释一下原因么,或者给我指一个方向,我百度一下。谢谢您了
5 年多之前 回复
danielinbiti
danielinbiti 回复o0olike: 是不是onCreate实在执行过APP一次后又新加的语句, 改个版本号试试,dbHelper = new MyDatabaseHelper(this , "myDict.db3",2);
5 年多之前 回复
danielinbiti
danielinbiti 回复o0olike: 不是提示 no such table: dict: ,没有表,你看看表生成了嘛
5 年多之前 回复
o0olike
pofy_zhu 我不是在前面已经sql里面创建了一张表么,就是在db.execSQL(CREATE_TABLE_SQL);这个地方。为什么说没有表呢
5 年多之前 回复
o0olike
pofy_zhu 回复danielinbiti: FATAL EXCEPTION: main android.database.sqlite.SQLiteException: no such table: dict: , while compiling: insert into dict values(null,?,?)
5 年多之前 回复
o0olike
pofy_zhu 回复danielinbiti: FATAL EXCEPTION: main android.database.sqlite.SQLiteException: no such table: dict: , while compiling: insert into dict values(null,?,?)
5 年多之前 回复
danielinbiti
danielinbiti 回复o0olike: 错误信息是什么
5 年多之前 回复
o0olike
pofy_zhu 您好,为什么我把那个地方按照您说的改了。然后我一点击插入的按钮,然后程序就崩溃了啊。
5 年多之前 回复

getReadableDatabase()替换为getWritableDatabase()。这样做其实不好。最好是将分开到底层去操作数据库

o0olike
pofy_zhu 您是说直接在底层操作而不用android提供的sqliteDatabanse操作么。
5 年多之前 回复

是的,直接在底层进行数据操作在安全性业绩可控性方面效果相对要好些

是的,在底层操作数据。整体安全性和可控性好很多

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐