【Android Sqlite】萌動的sqlite數據庫,簡單實現:用戶增刪改查

sqlite數據的使用很常見呢,我們簡單學習一下app的登錄、註冊、修改、刪除用戶吧!

下面就寫一個萌動的app註冊登錄吧!


主頁面:

還有2個圖片按鈕(雖然不是很好看,但是將就吧→。→)




EditView輸入框的監聽事件,2張圖片的切換

(爲了找22,33的圖片,我反編譯了 bilibii 的app,想不到圖片是分爲4張的 →。→)


用戶註冊:



修改密碼:這裏的判斷比較多!



刪除:


代碼構成一覽:




一、entity:User 實體類 

自己寫 →。→

private int id;
private String uname;
private String upwd;
private int isDel;

二、dao包:

DBOpenHelper:建表


package example.com.user_sqlite.dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Administrator on 2017/4/5.
 */
public class DBOpenHelper extends SQLiteOpenHelper{

    public DBOpenHelper(Context context, String name, CursorFactory factory,int version) {
        super(context, "SqliteTest.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqliteDatabase) {
        String sql=
                "create table if not exists t_user("+
                        "id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"+
                        "uname VARCHAR(255),"+
                        "upwd VARCHAR(255),"+
                        "isDel INTEGER DEFAULT 0"+
                        ")";
        sqliteDatabase.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    }

}

UserDao:sql語句的編寫


package example.com.user_sqlite.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.lang.reflect.Array;
import java.util.ArrayList;

import example.com.user_sqlite.entity.User;

/**
 * Created by Administrator on 2017/3/19.
 */
public class UserDao {
    private DBOpenHelper dbOpenHelper;      //創建DBOpenHelper對象
    private SQLiteDatabase sqLiteDatabase; //創建SQLiteDatabase對象
    public UserDao(Context context){       //定義構造函數
        dbOpenHelper=new DBOpenHelper(context,null,null,0);  //初始化DBOpenHelper對象
    }
//插入數據
    public void dbInsert(String uname,String upwd){
        sqLiteDatabase =dbOpenHelper.getWritableDatabase();
        String sql="insert into t_user(uname,upwd,isDel) values (?,?,0)";
        Object bindArgs[] = new Object[]{ uname,upwd};
        sqLiteDatabase.execSQL(sql,bindArgs);
    }
//查詢數據
    public int dbGetUserSize(){
        sqLiteDatabase = dbOpenHelper.getWritableDatabase();
        String sql="select count(*) from t_user where isDel=0";
        Cursor cursor = sqLiteDatabase.rawQuery(sql,null);
        if (cursor.moveToNext())       //判斷Cursor中是否有數據
        {
            return cursor.getInt(0);  //返回總記錄數
        }
        return 0;                     //如果沒有數據,則返回0
    }

    public User dbQueryOneByUsername(String uname){
        sqLiteDatabase = dbOpenHelper.getWritableDatabase();
        String sql="select * from t_user where uname=? and isDel=0";
        String[] selectionArgs = new String[]{ uname };
        Cursor cursor = sqLiteDatabase.rawQuery(sql,selectionArgs);
        if (cursor.moveToNext())  //判斷Cursor中是否有數據
        {
            User user=new User();
            user.setId(cursor.getInt(cursor.getColumnIndex("id")));
            user.setUname(cursor.getString(cursor.getColumnIndex("uname")));
            user.setUpwd(cursor.getString(cursor.getColumnIndex("upwd")));
            return user; //返回總記錄行數
        }
        return null;
    }
//修改密碼
    public void dbUpdatePassword(String uname,String newUpwd){
        sqLiteDatabase = dbOpenHelper.getWritableDatabase();
        String sql="update t_user set upwd=? where uname=? and isDel=0";
        Object bindArgs[] = new Object[]{ newUpwd,uname };
        sqLiteDatabase.execSQL(sql,bindArgs);
    }
//查詢新增數
    public ArrayList<User> dbQueryAll(){
        ArrayList<User> userArrayList = new ArrayList<User>();
        sqLiteDatabase = dbOpenHelper.getWritableDatabase();
        String sql="select * from t_user where isDel=0";
        Cursor cursor= sqLiteDatabase.rawQuery(sql,null);
        for (cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
            if (cursor.getInt(cursor.getColumnIndex("isDel"))!=1){
                User user=new User();
                user.setId(cursor.getInt(cursor.getColumnIndex("id")));
                user.setUname(cursor.getString(cursor.getColumnIndex("uname")));
                user.setUpwd(cursor.getString(cursor.getColumnIndex("upwd")));
                userArrayList.add(user);
            }
        }
        return userArrayList;
    }

//更新數據
    public void dbDeleteUser(int id){
        sqLiteDatabase = dbOpenHelper.getWritableDatabase();
        String sql="update t_user set isDel=1 where id=?";
        Object bindArgs[] = new Object[]{ id };
        sqLiteDatabase.execSQL(sql,bindArgs);
    }

}

三、實現的方法:

1、MainActivity


package example.com.user_sqlite;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;

import example.com.user_sqlite.dao.UserDao;
import example.com.user_sqlite.entity.User;

public class MainActivity extends Activity {
    private ImageView bili1,bili2;
// 用戶登錄
    private EditText editTextA1;
    private EditText editTextA2;
    private Button buttonA1;

    // 數據庫操作類
    private UserDao userDao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

// 註冊組件
        userDao = new UserDao(this);
        editTextA1 = (EditText) findViewById(R.id.editTextA1);
        editTextA2 = (EditText) findViewById(R.id.editTextA2);

        buttonA1 = (Button) findViewById(R.id.buttonA1);
        bili1=(ImageView) findViewById(R.id.bili1);
        bili2=(ImageView) findViewById(R.id.bili2);

// 用戶登錄
        buttonA1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String uname = editTextA1.getText() + "";
                String upwd = editTextA2.getText() + "";
//一個是輸入不能爲空,一個是不能只打空格null
                if (uname.equals(null) || uname == "" || upwd.equals(null) || upwd == "") {
                    Toast.makeText(MainActivity.this, "用戶名或密碼不得爲空!", Toast.LENGTH_SHORT).show();
                } else {
                    User user = userDao.dbQueryOneByUsername(uname);
                    if (userDao.dbQueryOneByUsername(uname) == null) {
                        Toast.makeText(MainActivity.this, "此用戶不存在!", Toast.LENGTH_SHORT).show();
                    } else {
                        if (!user.getUpwd().equals(upwd)) {
                            Toast.makeText(MainActivity.this, "密碼錯誤!", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(MainActivity.this, "登錄成功!", Toast.LENGTH_SHORT).show();
                            Intent intent = new Intent(MainActivity.this, TableActivity.class);
                            startActivity(intent);
                        }
                    }
                }
            }
        });
//輸入框 獲取/失去 焦點切換圖片
        editTextA1.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener(){

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
            //獲取焦點的時候,圖片一顯示,圖片二隱藏
                if (hasFocus){
                    bili1.setVisibility(v.VISIBLE);
                    bili2.setVisibility(v.GONE);
                }else {
                    bili2.setVisibility(v.VISIBLE);
                    bili1.setVisibility(v.GONE);
                }
            }
        });

    }
//註冊
    public void Login(View view){
        Intent intent =  new Intent(this,LoginActivity.class);
        startActivity(intent);
    }
//查看列表信息
    public void Look(View view){
        Intent intent =  new Intent(this,TableActivity.class);
        startActivity(intent);
    }
}

1.1:activity_main.xml 


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:background="@android:color/white"
    tools:context="example.com.user_sqlite.MainActivity">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<!-- 用戶登錄: -->
    <ImageView
        android:id="@+id/bili1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/bi22"
        android:layout_gravity="center_horizontal"/>
    <ImageView
        android:id="@+id/bili2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/bi33"
        android:visibility="gone"
        android:layout_gravity="center_horizontal"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginTop="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/textViewA"
        android:textSize="24dp"
        android:gravity="center_horizontal"
        android:textColor="@android:color/holo_blue_light"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginRight="20dp"
        android:layout_marginTop="10dp">

        <TextView
            android:layout_width="80dp"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="@string/textView1"
            android:textSize="18dp"
            android:textColor="@android:color/holo_blue_light"/>

        <EditText
            android:id="@+id/editTextA1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inputType="text"
            android:textSize="18dp"

            android:background="@drawable/editbg"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginRight="20dp">

        <TextView
            android:layout_width="80dp"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="@string/textView2"
            android:textSize="18dp"
            android:textColor="@android:color/holo_blue_light"/>

        <EditText
            android:id="@+id/editTextA2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inputType="textPassword"
            android:textSize="18dp"
            android:background="@drawable/editbg"/>
</LinearLayout>
    <Button
        android:id="@+id/buttonA1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button1"
        android:textSize="18sp"
        android:textColor="@color/chuise2"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:background="@drawable/buttonbg"/>
</LinearLayout>

<!--2個圖片按鈕 -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="30dp">
    <ImageButton
        android:onClick="Login"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="100dp"
        android:scaleType="fitXY"
        android:src="@drawable/a2"
        android:background="#00000000"/>
    <ImageButton
        android:onClick="Look"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="100dp"
        android:scaleType="fitXY"
        android:src="@drawable/a3"
        android:background="#00000000"
        android:layout_marginLeft="30dp"/>
</LinearLayout>
</LinearLayout>

</ScrollView>

2、LoginActivity.java

註冊方法:這裏寫了很多if else的判斷,可能有點看暈,但是修改密碼AlterActivity 更加暈呢

或許我應該有接口封裝一來,有人跟我說:寫成接口,然後用true,false這麼判斷,

可是也有人對我說:你這裏的代碼複用性不高,寫成接口封裝會造成負擔.....

所以,我還沒有封裝呢....


package example.com.user_sqlite;

import android.content.Intent;
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.Toast;

import example.com.user_sqlite.dao.UserDao;

public class LoginActivity extends AppCompatActivity {

    // 用戶註冊
    private EditText editTextB1;
    private EditText editTextB2;
    private EditText editTextB3;
    private Button buttonB1;

    // 數據庫操作類
    private UserDao userDao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        userDao = new UserDao(this);
        editTextB1 = (EditText) findViewById(R.id.editTextB1);
        editTextB2 = (EditText) findViewById(R.id.editTextB2);
        editTextB3 = (EditText) findViewById(R.id.editTextB3);

        buttonB1 = (Button) findViewById(R.id.buttonB1);
        //用戶註冊
        buttonB1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String uname = editTextB1.getText() + "";
                String upwd = editTextB2.getText() + "";
                if (uname.equals(null) || uname == "" || upwd.equals(null) || upwd == ""){
                    Toast.makeText(LoginActivity.this,"用戶名或密碼不得爲空!",Toast.LENGTH_SHORT).show();
                }else {
                    String confirmPwd = editTextB3.getText()+ "";
                if (!upwd.equals(confirmPwd)){
                    Toast.makeText(LoginActivity.this,"兩次輸入密碼不一致",Toast.LENGTH_SHORT).show();
                }else {
                if (userDao.dbQueryOneByUsername(uname) == null){
                    userDao.dbInsert(uname,upwd);
                    Toast.makeText(LoginActivity.this,"註冊成功!用戶名:"+uname+
                            ",密碼:"+upwd+",請牢記!",Toast.LENGTH_SHORT).show();
                    finish();
                    Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                    startActivity(intent);
                    }else {
                        Toast.makeText(LoginActivity.this,"該用戶已被註冊", Toast.LENGTH_SHORT).show();
                    }
                    }
                }
            }
        });

    }
}

2.1、activity_login:註冊頁面


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context="example.com.user_sqlite.LoginActivity">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="120dp"
        android:src="@drawable/a1"
        android:layout_gravity="center_horizontal"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/textViewB"
            android:textSize="24sp"
            android:gravity="center_horizontal"
            android:layout_marginTop="20dp"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="80dp"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView1"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextB1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="text"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="80dp"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView2"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextB2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="textPassword"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView3"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextB3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="textPassword"
                android:textSize="18sp" />
        </LinearLayout>

        <Button
            android:id="@+id/buttonB1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/button1"
            android:textSize="18sp"
            android:textColor="@color/chuise"
            android:layout_gravity="center_horizontal"/>
    </LinearLayout>

</LinearLayout>

3、AlterActivity.java :修改密碼

這裏的if_else判斷更多

package example.com.user_sqlite;

import android.content.Intent;
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.Toast;

import example.com.user_sqlite.dao.UserDao;
import example.com.user_sqlite.entity.User;

public class AlterActivity extends AppCompatActivity {
    // 修改密碼
    private EditText editTextC1;
    private EditText editTextC2;
    private EditText editTextC3;
    private EditText editTextC4;
    private Button buttonC1;

    // 數據庫操作類
    private UserDao userDao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alter);

        userDao = new UserDao(this);
        editTextC1 = (EditText) findViewById(R.id.editTextC1);
        editTextC2 = (EditText) findViewById(R.id.editTextC2);
        editTextC3 = (EditText) findViewById(R.id.editTextC3);
        editTextC4 = (EditText) findViewById(R.id.editTextC4);

        buttonC1 = (Button) findViewById(R.id.buttonC1);

        //修改密碼
        buttonC1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String uname=editTextC1.getText() + "";
                String upwd =editTextC2.getText() + "";

            if (uname.equals(null) || uname == "" || upwd.equals(null) || upwd == ""){
                Toast.makeText(AlterActivity.this,"用戶名或密碼不得爲空!",Toast.LENGTH_SHORT).show();
            }else {
                User user = userDao.dbQueryOneByUsername(uname);
                if (userDao.dbQueryOneByUsername(uname) == null) {
                    Toast.makeText(AlterActivity.this,"此用戶不存在!",Toast.LENGTH_SHORT).show();
                }else {
                    if (!user.getUpwd().equals(upwd)) {
                        Toast.makeText(AlterActivity.this, "密碼錯誤!", Toast.LENGTH_SHORT).show();
                    } else {
                        String newPwd = editTextC3.getText() + "";
                        String confirmNewPwd = editTextC4.getText() + "";

                        if (newPwd.equals(null) || newPwd == "") {
                            Toast.makeText(AlterActivity.this, "新密碼不能爲空!", Toast.LENGTH_SHORT).show();
                        } else {
                            if (!newPwd.equals(confirmNewPwd)) {
                                Toast.makeText(AlterActivity.this, "兩次密碼輸入不一致!", Toast.LENGTH_SHORT).show();
                            } else {
                                userDao.dbUpdatePassword(uname, newPwd);
                                Toast.makeText(AlterActivity.this, "修改密碼成功!新密碼:" + newPwd + ",請牢記", Toast.LENGTH_SHORT).show();
                                finish();
                                Intent intent= new Intent(AlterActivity.this,MainActivity.class);
                                startActivity(intent);
                            }
                        }
                    }
                }
                }
            }
        });

    }
}

3.1、activity_alter.xml

修改密碼的頁面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context="example.com.user_sqlite.AlterActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/textViewC"
            android:textSize="24sp"
            android:textColor="@android:color/holo_blue_light"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="80dp"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView1"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextC1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="text"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="80dp"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView4"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextC2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="textPassword"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="80dp"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView5"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextC3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="textPassword"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:gravity="center_vertical"
                android:layout_height="match_parent"
                android:text="@string/textView3"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/editTextC4"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:inputType="textPassword"
                android:textSize="18sp" />
        </LinearLayout>

        <Button
            android:id="@+id/buttonC1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/button1"
            android:textSize="18sp"
            android:textColor="@color/chuise"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/buttonbg"
            android:layout_marginTop="10dp"/>
    </LinearLayout>

</LinearLayout>

4、TableActivity.java

代碼佈局,輸出顯示註冊的用戶


package example.com.user_sqlite;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;

import java.util.ArrayList;

import example.com.user_sqlite.dao.UserDao;
import example.com.user_sqlite.entity.User;

public class TableActivity extends Activity {
//數據庫操作類
    private UserDao userDao;
    private LinearLayout linearLayout1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_table);

//代碼佈局,輸出註冊的用戶信息
        userDao = new UserDao(this);
        linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);

        int userSize = userDao.dbGetUserSize();
        TextView textView1 = new TextView(this);
        textView1.setText("共有"+userSize+ "個用戶");
        textView1.setTextSize(24);
        linearLayout1.addView(textView1,1);

        if (userSize>0){
            ArrayList<User> userList = userDao.dbQueryAll();
            TableLayout tableLayout1 = new TableLayout(this);
            tableLayout1.setStretchAllColumns(true);
            TableRow tableRow = new TableRow(this);
            TextView textView = new TextView(this);
            textView.setTextSize(24);
            textView.setText("用戶名");
            tableRow.addView(textView);

            textView= new TextView(this);
            textView.setTextSize(24);
            textView.setText("密碼");
            tableRow.addView(textView);

            textView = new TextView(this);
            textView.setTextSize(24);
            textView.setText("操作");
            tableRow.addView(textView);

//新建的TableRow添加到TableLayout
            tableLayout1.addView(tableRow,new TableLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.MATCH_PARENT));
            for (int i=0;i<userSize;i++){
                User user = userList.get(i);
//一個用戶佔據一行
                tableRow = new TableRow(this);
                textView = new TextView(this);
                textView.setTextSize(18);
                textView.setText(user.getUname());
                tableRow.addView(textView);

                textView = new TextView(this);
                textView.setTextSize(18);
                textView.setText(user.getUpwd());
                tableRow.addView(textView);

                Button button = new Button(this);
                button.setText("刪除");
                button.setTextSize(18);
                button.setId(user.getId());
                button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    userDao.dbDeleteUser(v.getId());
                    finish();
                    Intent intent = new Intent(TableActivity.this, TableActivity.class);
                    startActivity(intent);
                    Toast.makeText(TableActivity.this,"刪除成功!",Toast.LENGTH_SHORT).show();
                }
            });
                tableRow.addView(button);
//新建的TableRow添加到TableLayout
                tableLayout1.addView(tableRow,new TableLayout.LayoutParams(
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.MATCH_PARENT));
            }
            linearLayout1.addView(tableLayout1,2);
        }

    }
//對物理按鈕的監聽
    public boolean onKeyDown(int keycode, KeyEvent event){
        switch (keycode){
            case KeyEvent.KEYCODE_BACK:
                finish(); //關閉這個Activity
                Intent intent = new Intent(TableActivity.this,MainActivity.class);
                startActivity(intent);
                break;
        }
                return super.onKeyDown(keycode,event);
    }
//登錄跳轉
    public void dengLu(View v){
        finish();
        Intent intent = new Intent(this,MainActivity.class);
        startActivity(intent);
    }

//註冊跳轉
    public void Login(View v){
        finish();
        Intent intent = new Intent(this,LoginActivity.class);
        startActivity(intent);
    }
    //修改跳轉
    public void Alter(View v){
        finish();
        Intent intent = new Intent(this,AlterActivity.class);
        startActivity(intent);
    }
}

4.1、activity_table:xml

輸出信息頁面,因爲是代碼佈局的,所以有點醜....


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:orientation="vertical">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<!-- 註冊用戶顯示 -->
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <View
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:tag="1" />

        <View
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:tag="2" />

    </LinearLayout>

 <!-- 三個按鈕 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="@string/textViewA"
            android:textColor="@color/chuise"
            android:background="@drawable/buttonbg"
            android:onClick="dengLu" />

        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="@string/textViewB"
            android:textColor="@color/chuise"
            android:background="@drawable/buttonbg"
            android:layout_marginLeft="10dp"
            android:onClick="Login"/>
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="@string/textViewC"
            android:textColor="@color/chuise"
            android:background="@drawable/buttonbg"
            android:layout_marginLeft="10dp"
            android:onClick="Alter"/>

    </LinearLayout>
</LinearLayout>
</ScrollView>

有時候我會用很多finish(); 大家自行決定要不要加吧.....


四、drwable資源文件:

1、buttonbg.xml

按鈕的樣式

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 描邊 -->
    <stroke android:width="0.5dp"  android:color="@android:color/holo_blue_light"/>
    <!-- 填充 -->
    <!--<solid android:color=""/>-->

    <!-- 圓角 -->
    <corners android:radius="2dp"/>

</shape>

2、editbg.xml

輸入框的樣式:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 描邊 -->
    <stroke android:width="0.5dp"  android:color="@android:color/holo_blue_light"/>
    <!-- 填充 -->
    <!--<solid android:color=""/>-->

    <!-- 圓角 -->
    <corners android:radius="5dp"/>

    <!-- 內容與邊框間距 -->
    <padding android:left="10dp" android:top="5dp"
        android:right="0dp" android:bottom="0dp"/>

</shape>

至於圖片啊....大家自己找吧:



五、values屬性文件夾

colors自己寫

strings.xml:

<resources>
    <string name="app_name">Sqlite數據庫的增刪改查</string>
    <string name="action_settings">Settings</string>
    <string name="textViewA">用戶登錄</string>
    <string name="textViewB">用戶註冊</string>
    <string name="textViewC">修改密碼</string>

    <string name="textView1">用戶名:</string>
    <string name="textView2">密  碼 :</string>
    <string name="textView3">確認密碼:</string>
    <string name="textView4">舊密碼:</string>
    <string name="textView5">新密碼:</string>

    <string name="button1">確定</string>
    <string name="button2">查看用戶表</string>
    <string name="button3">返回</string>

</resources>


對於這個簡單的項目,其實還有個致命的缺陷呢!

就是非當前用戶也可以修改密碼,這裏大家多做一個判斷








發佈了73 篇原創文章 · 獲贊 147 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章