栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SQLite数据库的创建与增删改查

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQLite数据库的创建与增删改查

1.主界面布局设计( layout .xml )

主界面布局中放置3个按钮,分别是“查询/删除”,“修改”,“添加”,单击按钮后分别出现对应的界面。




    

2.数据库创建以及操作方法类( user database )

数据库的创建类 user _ database 包含了数据库创建的 oncreate ()方法、版本更新的 onUpgradeO 方法、数据添加的 adddata ()方法、数据删除的 delete ()方法以及数据更新的 update ()方法,

public class user_database extends SQLiteOpenHelper {
    public user_database(@Nullable Context context ) {
        super(context,"user",null,1);//数据库名user
    }
//数据库第一次创建是调用该方法
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        String sql="create table user(id integer primary key autoincrement," +
                "username varchar(20),paswd varchar(20),sex varchar(20),age integer)";
        sqLiteDatabase.execSQL(sql);
    }
//数据库版本号更新是调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
//添加
    public void adddata(SQLiteDatabase sqLiteDatabase,String username,String paswd,String sex,int age){
        ContentValues values=new ContentValues();
        values.put("username",username);
        values.put("paswd",paswd);
        values.put("sex",sex);
        values.put("age",age);
        sqLiteDatabase.insert("user",null,values);
        sqLiteDatabase.close();
    }
//删除
    public void delete(SQLiteDatabase sqLiteDatabase,int id){
        sqLiteDatabase.delete("user","id=?",new String[]{id+""});
        sqLiteDatabase.close();
    }
//更新
    public void update(SQLiteDatabase sqLiteDatabase,int id,String username,String paswd,String sex,int age){
        ContentValues values=new ContentValues();
        values.put("username",username);
        values.put("paswd",paswd);
        values.put("sex",sex);
        values.put("age",age);
        sqLiteDatabase.update("user",values,"id=?",new String[]{id+""});
        sqLiteDatabase.close();
    }
//查询
    public List querydata(SQLiteDatabase sqLiteDatabase){
        Cursor cursor=sqLiteDatabase.query("user",null,null,
                null,null,null,"id ASC");
        Listlist=new ArrayList();
        while (cursor.moveToNext()){
            int id=cursor.getInt(cursor.getColumnIndex("id"));
            String username=cursor.getString(1);
            String paswd=cursor.getString(2);
            String sex=cursor.getString(3);
            int age=cursor.getInt(cursor.getColumnIndex("age"));
            list.add(new userInfo(id,username,paswd,sex,age));
        }
        cursor.close();
        sqLiteDatabase.close();
        return list;
    }

}

3.创建一个 userInfo 的 JavaBean 类

在操作数据库时,把数据存放在一个 JavaBean 对象中操作起来会相对简单一点。因此创建一个 userInfo 类。

public class userInfo {
    public int id;
    public String username;
    public String paswd;
    public String sex;
    public int age;

    public userInfo(int id, String username, String paswd, String sex, int age) {
        this.id=id;
        this.username=username;
        this.paswd=paswd;
        this.sex=sex;
        this.age=age;
    }

    public void setId(int id){this.id=id; }
    public void setUsername(String username){ this.username=username; }
    public void setPaswd(String paswd){ this.paswd=paswd; }
    public void setSex(String sex){ this.sex=sex; }
    public void setAge(int age){  this.age=age; }
    public int getId(){  return id;  }
    public String getUsername(){ return username; }
    public String getPaswd(){ return paswd; }
    public String getSex(){ return sex; }
    public int getAge(){ return age;  }
    @Override
    public String toString(){
        return "userInfo{"+"id+"+id+",username"+username+'''+
                ",paswd"+paswd+'''+",sex"+sex+'''+",age"+age+'}';
    }
}

4.主界面功能实现类( MainActivity ) 

MainActivity 负责数据库的创建以及对布局中的3个按钮添加监听,然后跳转到不同的功能界面中去。

public class MainActivity extends Activity implements View.OnClickListener {
    public user_database user;
    public SQLiteDatabase sqL_read;
    private Button s_d_btn,i_btn,u_btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        user_database user=new user_database(MainActivity.this);
        sqL_read=user.getReadableDatabase();
        init();
    }

    private void init() {
        s_d_btn=(Button)findViewById(R.id.search_delete);
        i_btn=(Button)findViewById(R.id.add);
        u_btn=(Button)findViewById(R.id.update);
        s_d_btn.setOnClickListener(this);
        i_btn.setOnClickListener(this);
        u_btn.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.search_delete:
                Intent intent1=new Intent(MainActivity.this,Sea_deluser_Activity.class);
                startActivity(intent1);
                break;
            case R.id.add:
                Intent intent2=new Intent(MainActivity.this,Insertuser_Activity.class);
                startActivity(intent2);
                break;
            case R.id.update:
                Intent intent3=new Intent(MainActivity.this,Updareuser_Activity.class);
                startActivity(intent3);
                break;
            default:
                break;
        }
    }
}

5.用户信息查询&删除界面设计( ser_del.xml )

考虑到用户信息的删除,需要先查询到用户信息,然后再根据 id 删除数据,所以把用户的信息查询与删除放在一个界面里实现。在显示用户的信息时,单击用户名弹出一个对话框,提示用户是否删除。 ser_del. xml




    

        

        

        

        

        
    

    
    

6.删除查询类(Sea_deluser_Activity) 

public class Sea_deluser_Activity extends Activity {
    public ListView user_list;
    private Listlist;
    private SQLiteDatabase sqLiteDatabase;
    private String[] user_mes;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.ser_del);
        user_list=findViewById(R.id.mes);
        user_database users=new user_database(Sea_deluser_Activity.this);
        sqLiteDatabase=users.getReadableDatabase();
//获取从数据库查询到的数据
        list=users.querydata(sqLiteDatabase);
//把获取到的信息添加到用户数组中
        user_mes=new String[list.size()];
        for (int i = 0; iadapter=new ArrayAdapter
                (Sea_deluser_Activity.this, android.R.layout.simple_list_item_1,user_mes);
        user_list.setAdapter(adapter);
//为ListView每个元素添加单击元素
        user_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView adapterView, View view, int i, long l) {
                final int id=list.get(i).getId();
//弹出一个对话框
                new AlertDialog.Builder(Sea_deluser_Activity.this).setTitle("系统提示")
                        .setMessage("确定删除吗").setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
//删除数据操作,首先获得到ID
                        user_database user_database=new user_database(Sea_deluser_Activity.this);
                        SQLiteDatabase sqLiteDatabase=user_database.getWritableDatabase();
                        user_database.delete(sqLiteDatabase,id);
                        refresh();
                        Toast.makeText(Sea_deluser_Activity.this,"删除成功",Toast.LENGTH_SHORT).show();
                    }
                }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                }).show();
            }
        });
    }
//刷新页面
    private void refresh() {
        finish();
        Intent intent=new Intent(Sea_deluser_Activity.this,Sea_deluser_Activity.class);
        startActivity(intent);

    }
}

7.用户信息添加界面设计( user insert . xml )

用户信息添加界面主要包含3个 EditText 组件,分别对应数库中的 username 、 paswd 、 age 。另外还包括一个按钮和一个 Spinner 组件: Spinner 组件负责让用户选择性别:按钮负责把数据添加到数据库当中。



    
    
    
    
    

8.用户信息添加功能实现类( Insertuser _ Activity ) 

Insertuser _ Activity 首先需要获取各个组件,然后为按钮添加监听事件,为 Spinner 组件添加选择事件。按钮的监听事件负责把 EditText 中输人的信息和 Spinner 中选择的性别添加到数据库中,然后跳转到用户数据查询页面,查看插人的信息,添加的事件通过调用数据库创建类的数据插人方法实现。

public class Insertuser_Activity extends Activity {
    private EditText name_edit,paswd_edit,age_edit;
    private Spinner spinner;
    private Button save_btn;
    private String select_sex="男";
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.insert);
        init();
    }
    public void init() {
        name_edit = (EditText) findViewById(R.id.insert_name);
        paswd_edit = (EditText) findViewById(R.id.insert_paswd);
        spinner = (Spinner) findViewById(R.id.insert_sex);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
                select_sex = Insertuser_Activity.this.getResources().getStringArray(R.array.sex)[i];
            }

            @Override
            public void onNothingSelected(AdapterView adapterView) {
            }
        });
        age_edit = (EditText) findViewById(R.id.insert_age);
        save_btn = (Button) findViewById(R.id.save_usermes);
        save_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name_str = name_edit.getText().toString();
                Toast.makeText(Insertuser_Activity.this,name_str,Toast.LENGTH_SHORT).show();
                String paswd_str = paswd_edit.getText().toString();
                int age = Integer.parseInt(age_edit.getText().toString());
//调用数据库操作类的插入方法
                user_database us_db = new user_database(Insertuser_Activity.this);
                SQLiteDatabase sqLiteDatabase = us_db.getWritableDatabase();
                us_db.adddata(sqLiteDatabase, name_str, paswd_str, select_sex, age);
                Intent intent = new Intent(Insertuser_Activity.this, Sea_deluser_Activity.class);
                startActivity(intent);
            }
        });
    }
}

9.数据库数据更新界面(update.xml)




    

        

        

10.数据更新类(Updareuser_Activity)

public class Updareuser_Activity extends Activity {
    private EditText id_edit,name_edit,paswd_edit,age_edit;
    private Spinner spinner;
    private Button update_btn,chaxun_btn;
    private String select_sex="男";
    public ListView user_list;
    private List list;
    SQLiteDatabase sqLiteDatabase;
    private String[] user_mes;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.update);
        init();
    }

    public void init() {
        id_edit=(EditText) findViewById(R.id.user_id) ;
        name_edit = (EditText) findViewById(R.id.update_name);
        paswd_edit = (EditText) findViewById(R.id.update_paswd);
        spinner = (Spinner) findViewById(R.id.update_sex);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
                select_sex = Updareuser_Activity.this.getResources().getStringArray(R.array.sex)[i];
            }
            @Override
            public void onNothingSelected(AdapterView adapterView) {
            }
        });
        age_edit = (EditText) findViewById(R.id.update_age);
        update_btn = (Button) findViewById(R.id.update_usermes);
        update_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int id=Integer.parseInt(id_edit.getText().toString());
                String name_str = name_edit.getText().toString();
                String paswd_str = paswd_edit.getText().toString();
                int age = Integer.parseInt(age_edit.getText().toString());
                Toast.makeText(Updareuser_Activity.this,"修改成功!",Toast.LENGTH_SHORT).show();
                user_database us_db = new user_database(Updareuser_Activity.this);
                SQLiteDatabase sqLiteDatabase = us_db.getWritableDatabase();
                us_db.update(sqLiteDatabase,id, name_str, paswd_str, select_sex, age);
                Intent intent = new Intent(Updareuser_Activity.this, Sea_deluser_Activity.class);
                startActivity(intent);
            }
        });
        chaxun_btn=findViewById(R.id.chaxun);
        chaxun_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    user_list=findViewById(R.id.user_cx);
                    user_database users=new user_database(Updareuser_Activity.this);
                    sqLiteDatabase=users.getReadableDatabase();
                    list=users.querydata(sqLiteDatabase);
                    user_mes=new String[list.size()];
                    for (int i = 0; i < list.size(); i++) {
                        user_mes[i] = list.get(i).getId()+"tttttttt"+list.get(i).getUsername() + "tttttttt" +
                                list.get(i).getPaswd() + "tttttttt" + list.get(i).getSex() + "tttttttt"
                                + list.get(i).getAge();
                    }
                    final ArrayAdapter adapter = new ArrayAdapter
                            (Updareuser_Activity.this, android.R.layout.simple_list_item_1, user_mes);
                    user_list.setAdapter(adapter);
            }
        });
    }
}

AndroidManifest.xml添加

        
        
        

结果展示:

查询、删除:

 查询、更新:

添加:

 

 写完之后,感觉有点复杂 (T▽T),不过问题不大,友友根据实际情况修改。最后面的结果展示排版没弄好,建议自己动手操作一遍,便于理解。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号