因为是复制别人的代码更改的,出现了点击查询按钮后程序闪退
错误信息:
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="20dp"/>
<EditText
android:id="@+id/name"
android:layout_width="150dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机号:"
android:textSize="20dp"/>
<EditText
android:id="@+id/number"
android:layout_width="150dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="始发地:"
android:textSize="20dp"/>
<EditText
android:id="@+id/shifadi"
android:layout_width="150dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="目的地:"
android:textSize="20dp"/>
<EditText
android:id="@+id/mudidi"
android:layout_width="150dp"
android:layout_height="wrap_content" />
</LinearLayout>
<RadioGroup
android:id="@+id/RadioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:textSize="20dp"/>
<RadioButton
android:id="@+id/man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:textSize="20dp"/>
<RadioButton
android:id="@+id/woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:textSize="20dp"/>
</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商品类型:"
android:textSize="20dp"/>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Spinner>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/but1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存"/>
<Button
android:id="@+id/but2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"/>
<Button
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"/>
</LinearLayout>
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity.java
package com.example.sql;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
private String[] spinnerItems = {"果蔬", "快递", "食品"};
String str="";
String man1="";
String woman1="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button putDatabase=(Button) findViewById(R.id.but1);
Button outDatabase=(Button) findViewById(R.id.but2);
Button delDatabase=(Button) findViewById(R.id.del);
final TextView tv=(TextView)findViewById(R.id.info);//获取info所在TextView的位置,便于打印信息
final EditText et1=(EditText) findViewById(R.id.name);//获取姓名位置
final EditText et2=(EditText) findViewById(R.id.number);//获取手机号位置
final EditText et3=(EditText) findViewById(R.id.shifadi);//获取始发地
final EditText et4=(EditText) findViewById(R.id.mudidi);//获取目的地
final RadioButton sex1=(RadioButton) findViewById(R.id.man);//获取单选按钮组
final RadioButton sex2=(RadioButton) findViewById(R.id.woman);//获取单选按钮组
final Spinner spin=(Spinner) findViewById(R.id.spinner);//获取Spinner
//给Spinner添加适配器
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, spinnerItems);
spin.setAdapter(spinnerAdapter);
//创建数据库,建立表名字为TTList.db
dbHelper=new MyDatabaseHelper(this,"TTList.db",null,1);
dbHelper.getWritableDatabase();
//存数据
putDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
String na=et1.getText().toString();//获取名字信息
String num=et2.getText().toString();//获取手机号信息
String shi=et3.getText().toString();//获取始发地
String mu=et4.getText().toString();//获取目的地
values.put("姓名",na);//存学号
values.put("手机号",num);//存名字
values.put("始发地",shi);//存始发地
values.put("目的地",mu);//存目的地
if(sex1.isChecked()){
man1="男";
values.put("性别",man1);
}
if(sex2.isChecked()){
woman1="女";
values.put("性别",woman1);//存性别
}
values.put("商品类型",spin.getSelectedItem().toString());
if(num.equals("")||na.equals("")||man1.equals("")&&woman1.equals("")||spin.getSelectedItem().toString().equals(""))
{
Toast.makeText(MainActivity.this, "信息不全,请补充", Toast.LENGTH_SHORT).show();
}
else{
db.insert("TTList",null,values);
//注意别漏掉
values.clear();
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
}
}
});
//读数据
outDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
Cursor cursor=db.query("TTList",null,null,null,null,null,null);
if(cursor.moveToFirst()){
do{
String number=cursor.getString(cursor.getColumnIndex("手机号"));//根据key值读取信息
String name=cursor.getString(cursor.getColumnIndex("姓名"));
String sex=cursor.getString(cursor.getColumnIndex("性别"));
String subject=cursor.getString(cursor.getColumnIndex("商品类型"));
String shi=cursor.getString(cursor.getColumnIndex("始发地"));
String mu=cursor.getString(cursor.getColumnIndex("目的地"));
str+="姓名为:"+name+";"+ "手机号为:"+number+";"+ "性别为:"+sex+
";"+ "商品类型:"+subject+"始发地:"+shi+";"+"目的地:"+mu+";"+"\n";//将数据库信息存到str中并换行
}while (cursor.moveToNext());
}
cursor.close();
tv.setText(str);
}
});
delDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db=dbHelper.getWritableDatabase();
db.delete("TTList",null,null);
tv.setText("");
str="";
}
});
}
}
数据库的代码:
package com.example.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_LIST="create table TTList("
+"id integer primary key autoincrement,"
+"姓名 text,"
+"手机号 integer,"
+"始发地 text,"
+"目的地 text,"
+"性别 text,"
+"商品类型 text)";
private Context mContext;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){
super(context,name,factory,version);
mContext=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_LIST);
Toast.makeText(mContext, "创建成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}