数据插入不了,报错

数据插入不了,报错

package com.example.sqlitepro;

import android.Manifest;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button button1,button2,button3,button4;
    private EditText editText1,editText2,editText3;
    private RadioGroup group;
    private String genderStr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);
        int permission = ContextCompat.checkSelfPermission (this,Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if(permission != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions (this,new String[]{Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,
            Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
        }
        initView();
        button1.setOnClickListener (this);
        group.setOnCheckedChangeListener (new RadioGroup.OnCheckedChangeListener () {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId == R.id.rb_man){
                    genderStr = "男";
                }else {
                    genderStr = "女";
                }
            }
        });
    }

    private void initView() {
        button1 = findViewById (R.id.insert_btn);
        button2 = findViewById (R.id.select_btn);
        button3 = findViewById (R.id.update_btn);
        button4 = findViewById (R.id.delete_btn);
        editText1 = findViewById (R.id.et_name);
        editText2 = findViewById (R.id.et_age);
        editText3 = findViewById (R.id.et_select);
        group = findViewById (R.id.radio_gp);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId ()){
            case R.id.insert_btn:
                //指定路径
                String path = Environment.getExternalStorageDirectory () + "/stu_tb";
                File file = new File (path);
                if(!file.exists ()){
                    try {
                        file.createNewFile ();
                    } catch (IOException e) {
                        e.printStackTrace ();
                    }
                }
                final SQLiteOpenHelper sqLiteOpenHelper = new SQLiteOpenHelper (this,path,null,1) {
                    @Override
                    public void onCreate(SQLiteDatabase db) {
                        //如果没有找到相对应的数据库则创建一个新的数据库
                        Toast.makeText (MainActivity.this,"创建数据库",Toast.LENGTH_SHORT).show ();
//                        String sql0 = "create table stu_tb(_id integer primary key autoincrement,"+
//                        "name varchar(20),"+
//                        "age integer)";
//                        db.execSQL (sql0);
                    }
                    @Override
                    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                        //版本号大于之前的执行此更新操作
                        Toast.makeText (MainActivity.this,"升级数据库",Toast.LENGTH_SHORT).show ();
                    }
                };
                //获取数据库对象
                String nameStr = editText1.getText ().toString ();
                String ageStr = editText2.getText ().toString ();
                SQLiteDatabase db = sqLiteOpenHelper.getReadableDatabase ();
                String sql = "insert into stu_tb(name,age,gender) values('"+nameStr+"',"+ageStr+",'"+genderStr+"')";
                db.execSQL(sql);
                break;
        }
    }
}

2019-05-06 15:10:26.858 7335-7335/com.example.sqlitepro E/AndroidRuntime: FATAL EXCEPTION: main

    Process: com.example.sqlitepro, PID: 7335

    android.database.sqlite.SQLiteException: no such table: stu_tb (code 1): , while compiling: insert into stu_tb(name,age,gender) values('jach',20,'男')

        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)

        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501)

        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)

        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)

        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)

        at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1752)

        at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1682)

        at com.example.sqlitepro.MainActivity.onClick(MainActivity.java:95)

        at android.view.View.performClick(View.java:6294)

        at android.view.View$PerformClick.run(View.java:24770)

        at android.os.Handler.handleCallback(Handler.java:790)

        at android.os.Handler.dispatchMessage(Handler.java:99)

        at android.os.Looper.loop(Looper.java:164)

        at android.app.ActivityThread.main(ActivityThread.java:6494)

        at java.lang.reflect.Method.invoke(Native Method)

        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)

        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

2019-05-06 15:10:26.904 1629-1643/system_process E/memtrack: Couldn't load memtrack module

2019-05-06 15:10:27.034 1762-6268/com.android.systemui E/ResourcesManager: failed to add asset path /data/app/com.example.sqlitepro-CbtRQN0oQ-sKGwPBq6GecA==/base.apk

2019-05-06 15:10:27.035 1762-6268/com.android.systemui E/ResourcesManager: failed to add asset path /data/app/com.example.sqlitepro-CbtRQN0oQ-sKGwPBq6GecA==/base.apk

2019-05-06 15:10:27.035 1762-6268/com.android.systemui E/ResourcesManager: failed to add asset path /data/app/com.example.sqlitepro-CbtRQN0oQ-sKGwPBq6GecA==/base.apk

2019-05-06 15:10:27.073 1762-6268/com.android.systemui E/ResourcesManager: failed to add asset path /data/app/com.example.sqlitepro-CbtRQN0oQ-sKGwPBq6GecA==/base.apk

2019-05-06 15:10:27.165 1629-1643/system_process E/memtrack: Couldn't load memtrack module

2019-05-06 15:10:28.002 1408-1408/? E/EGL_emulation: tid 1408: eglCreateSyncKHR(2015): error 0x3004 (EGL_BAD_ATTRIBUTE)

2019-05-06 15:10:29.536 2140-3415/com.google.android.gms.persistent E/NetworkScheduler.ATC: Trying to release unacquired lock: com.google.android.gms/.clearcut.uploader.QosUploaderService

2019-05-06 15:10:30.992 7368-7368/com.google.android.gms.unstable E/zygote: The String#value field is not present on Android versions >= 6.0

2019-05-06 15:10:32.606 2140-3430/com.google.android.gms.persistent E/NetworkScheduler: Invalid component specified.

2019-05-06 15:10:32.611 2140-3430/com.google.android.gms.persistent E/NetworkScheduler: Invalid component specified.

2019-05-06 15:10:35.784 2140-3513/com.google.android.gms.persistent E/NetworkScheduler: Invalid component specified.

2019-05-06 15:10:38.816 1629-1643/system_process E/memtrack: Couldn't load memtrack module

2019-05-06 15:10:46.402 1629-1649/system_process E/BatteryExternalStatsWorker: modem info is invalid: ModemActivityInfo{ mTimestamp=0 mSleepTimeMs=0 mIdleTimeMs=0 mTxTimeMs[]=[0, 0, 0, 0, 0] mRxTimeMs=0 mEnergyUsed=0}

2019-05-06 15:10:53.265 1629-1643/system_process E/memtrack: Couldn't load memtrack module

2019-05-06 15:11:00.004 1629-1643/system_process E/memtrack: Couldn't load memtrack module

2019-05-06 15:11:03.310 2140-3430/com.google.android.gms.persistent E/NetworkScheduler: Invalid component specified.

2019-05-06 15:11:08.523 2140-3430/com.google.android.gms.persistent E/NetworkScheduler: Invalid component specified.


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
irista23 2019-05-06 16:18:56

错误提示是说该表不存在,你把创建表的代码注释打开

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android网络操作与数据存储2018版
  • 参与学习           人
  • 提交作业       307    份
  • 解答问题       1613    个

本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师