数据插入不了,报错
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
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星