求救: android.database.sqlite.SQLiteException: no such column: 商品类型 (code 1): , while compiling: SELECT * FROM TTList WHERE

因为是复制别人的代码更改的,出现了点击查询按钮后程序闪退
错误信息:
图片说明
图片说明

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) {

    }
}

1个回答

看你的数据库,没有商品类型这个列名,或者你的表搞错了。
不建议用中文或者和sql中的关键字重复的名字命名表、列。最好用英文,比如 ProductType

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