Android的SQLiteDataBase小項目,實現user類登陸注冊以及student類增刪改查


關於SQLiteDataBase這塊,大體有兩種主要的實現方式,一種是不使用Helper類的方式,此種方式存在一個弊端,即不能oncreate兩次,如果重復使用oncreate的button,則會報錯,所以為了避免這種錯誤,在此項目中使用類繼承SQLiteOpenHelper的方式進行SQLite3小型數據庫的小項目開發,簡單的實現登陸注冊,以及對特定vo類的增刪改查,中間還夾雜了ListView,ArrayAdapter,以及Intent的散知識點。

以下為正文:
首先介紹以下我寫的項目的框架,總的為幾個結構。
第一個部分為是所有項目都需要的簡單java類,即與表對應的vo類。
第二個部分為Acitivty部分,總的有三個Activity:
1.LoginActivity,登陸界面
2.RegisterAcitivity ,注冊界面
3.MainActivity,實現增刪改查的界面
第三個部分為邏輯部分,即增刪改查之類的方法,sql語句
第四個部分為Helper類

Helper類中

第二個方法OnUpgrade內容為空,因為此處用不到,也可加入DROP TABLE的語句,然后復寫oncreate實現表的更新。
此類主要目的是提供構造方法,以及創建數據庫表,參數為上下文環境,數據庫名,工廠,數據庫版本。
在邏輯層以及activity層,實例化此類,能夠通過參數傳遞數據庫的內容,實現增刪改查,簡單的說此類是數據庫連接類。

 

代碼如下:

  1 package com.example.sqlitedatabase;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import android.app.Activity;
  7 import android.os.Bundle;
  8 import android.util.Log;
  9 import android.view.View;
 10 import android.view.View.OnClickListener;
 11 import android.widget.ArrayAdapter;
 12 import android.widget.Button;
 13 import android.widget.EditText;
 14 import android.widget.ListView;
 15 import android.widget.Toast;
 16 
 17 import com.iotek.entity.Student;
 18 
 19 public class MainActivity extends Activity implements OnClickListener {
 20     private EditText et_name;
 21     private EditText et_age;
 22     private EditText et_score;
 23     private EditText et_query;
 24 
 25     private Button bt_add;
 26     private Button bt_del;
 27     private Button bt_update;
 28     private Button bt_query;
 29     private Button bt_all;
 30 
 31     private ArrayAdapter<String> adapter;
 32     private ListView lv_adapter;
 33     private List<Student> stuList = new ArrayList<Student>();
 34     private String[] data;
 35     // 用來使用其中的增刪改查
 36     private StudentBiz studentBiz = new StudentBiz(MainActivity.this);
 37 
 38     @Override
 39     protected void onCreate(Bundle savedInstanceState) {
 40         super.onCreate(savedInstanceState);
 41         setContentView(R.layout.activity_main);
 42         // 關聯控件
 43         initView();
 44         // 注冊監聽button
 45         registerListener();
 46     }
 47 
 48     // 注冊監聽button
 49     private void registerListener() {
 50         bt_add.setOnClickListener(this);
 51         bt_del.setOnClickListener(this);
 52         bt_update.setOnClickListener(this);
 53         bt_query.setOnClickListener(this);
 54         bt_all.setOnClickListener(this);
 55 
 56     }
 57 
 58     // 關聯控件
 59     private void initView() {
 60         et_name = (EditText) findViewById(R.id.et_name);
 61         et_age = (EditText) findViewById(R.id.et_age);
 62         et_score = (EditText) findViewById(R.id.et_score);
 63         et_query = (EditText) findViewById(R.id.et_query);
 64 
 65         bt_add = (Button) findViewById(R.id.bt_add);
 66         bt_del = (Button) findViewById(R.id.bt_del);
 67         bt_update = (Button) findViewById(R.id.bt_update);
 68         bt_query = (Button) findViewById(R.id.bt_query);
 69         bt_all = (Button) findViewById(R.id.bt_all);
 70         lv_adapter = (ListView) findViewById(R.id.listView1);
 71     }
 72 
 73     // 監聽button
 74     @Override
 75     public void onClick(View v) {
 76         switch (v.getId()) {
 77         case R.id.bt_add:
 78             if(et_age.getText().toString().equals("")||et_score.getText().toString().equals("")||et_name.getText().toString().equals("")){
 79                 break;
 80             }
 81             String name = et_name.getText().toString();
 82             int age = Integer.valueOf(et_age.getText().toString());
 83             int score = Integer.valueOf(et_score.getText().toString());
 84             Student student = new Student(name, age, score);    
 85             studentBiz.addStudent(student);// 添加到數據庫
 86             DynamicData();
 87             break;
 88         case R.id.bt_del:
 89             if(et_query.getText().toString().equals("")){
 90                 break;
 91             }
 92             int _id = Integer.valueOf(et_query.getText().toString());
 93             
 94             studentBiz.delStudent(_id);
 95             
 96             DynamicData(); 
 97             break;
 98         case R.id.bt_update:
 99             if(et_query.getText().toString().equals("")||et_age.getText().toString().equals("")||et_score.getText().toString().equals("")||et_name.getText().toString().equals("")){
100                 break;
101             }
102             int _id1 = Integer.valueOf(et_query.getText().toString());
103             String name1 = et_name.getText().toString();
104             int age1 = Integer.valueOf(et_age.getText().toString());
105             int score1 = Integer.valueOf(et_score.getText().toString());
106             Student stu_update = new Student(_id1, name1, age1, score1);
107             studentBiz.updateStudent(stu_update);
108             if(studentBiz.updateStudent(stu_update)==0){
109                 break;
110             }    
111             DynamicData();
112             break;
113         case R.id.bt_query:
114             if(et_query.getText().toString().equals("")){
115                 break;
116             }
117             int id2 = Integer.valueOf(et_query.getText().toString());
118         
119             Student stu1 = studentBiz.getStudentById(id2);
120             if(stu1==null){
121                 Toast.makeText(MainActivity.this, "沒有這個學生", Toast.LENGTH_LONG).show();
122                 break;
123             }
124                 
125             data = new String[] { stu1.toString() };
126             MakeAdapter();
127          
128             break;
129         case R.id.bt_all:
130             DynamicData();
131             for (Student stu : stuList) {
132                 Log.i("student", stu.toString());
133             }
134             break;
135 
136         default:
137             break;
138         }
139     }
140 
141     /**
142      * 實時刷新數據
143      */
144     private void DynamicData() {
145         studentBiz = new StudentBiz(MainActivity.this);
146         stuList = studentBiz.getAllStudents();
147         SetData();
148         MakeAdapter();
149     }
150 
151     /**
152      * 設置adapter數據
153      */
154     private void SetData() {
155         data = new String[stuList.size()];
156         for (int i = 0; i < data.length; i++) {
157             data[i] = stuList.get(i).toString();
158         }
159     }
160 
161     /**
162      * 適配器
163      */
164     private void MakeAdapter() {
165 
166         adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.item,
167                 R.id.tv_item, data);
168         lv_adapter.setAdapter(adapter);
169 
170     }
171 
172     /**
173      * 查詢所有數據
174      */
175     private void SelectAll() {
176         studentBiz = new StudentBiz(MainActivity.this);
177         stuList = studentBiz.getAllStudents();
178         for (Student stu : stuList) {
179             Log.i("student", stu.toString());
180         }
181     }
182 }
 1 package com.example.sqlitedatabase;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 import android.widget.TextView;
11 import android.widget.Toast;
12 
13 public class LoginActivity extends Activity implements OnClickListener {
14     private EditText et_username, et_password;
15     private Button bt_log, bt_reg;
16     private UserService userService = new UserService(LoginActivity.this);
17 
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         // TODO Auto-generated method stub
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.login);
23         findView();
24         registerListener();
25     }
26 
27     private void registerListener() {
28         bt_log.setOnClickListener(this);
29         bt_reg.setOnClickListener(this);
30 
31     }
32 
33     private void findView() {
34         et_username = (EditText) findViewById(R.id.et_username);
35         et_password = (EditText) findViewById(R.id.et_password);
36         bt_log = (Button) findViewById(R.id.bt_log);
37         bt_reg = (Button) findViewById(R.id.bt_reg);
38     }
39 
40     @Override
41     public void onClick(View view) {
42         switch (view.getId()) {
43         /**
44          * 登陸
45          */
46         case R.id.bt_log:
47             String Uname = et_username.getText().toString();
48             String Upass = et_password.getText().toString();
49             // 登陸成功返回的flag是true
50             boolean flag = userService.Login(Uname, Upass);
51             if (flag) {
52                 Intent intent = new Intent();
53                 intent.setClass(LoginActivity.this, MainActivity.class);
54                 startActivity(intent);
55             } else {
56                 Toast.makeText(LoginActivity.this, "沒有此用戶,請注冊",
57                         Toast.LENGTH_LONG).show();
58             }
59             break;
60         /**
61          * 注冊
62          */
63         case R.id.bt_reg:
64             Intent intent = new Intent();
65             intent.setClass(LoginActivity.this, RegisterActivity.class);
66             startActivity(intent);
67             break;
68         default:
69             break;
70         }
71 
72     }
73 }
 1 package com.example.sqlitedatabase;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 import android.widget.Toast;
11 
12 public class RegisterActivity extends Activity {
13     private EditText et_regname, et_regpsw;
14     private Button bt_reg;
15     private UserService service = new UserService(RegisterActivity.this);
16 
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         // TODO Auto-generated method stub
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.register);
22         /**
23          * 關聯控件
24          */
25         findView();
26         /**
27          * 注冊button的監聽
28          */
29         registerListener();
30     }
31 
32     private void registerListener() {
33         bt_reg.setOnClickListener(new OnClickListener() {
34 
35             @Override
36             public void onClick(View v) {
37                 String Uname = et_regname.getText().toString();
38                 String Upass = et_regpsw.getText().toString();
39                 boolean flag = service.Register(Uname, Upass);
40                 /**
41                  * flag為Register方法返回值,成功為true
42                  */
43                 if (flag) {
44                     Intent intent = new Intent();
45                     intent.setClass(RegisterActivity.this, LoginActivity.class);
46                     startActivity(intent);
47                 } else {
48                     Toast.makeText(RegisterActivity.this, "注冊失敗,重新注冊",
49                             Toast.LENGTH_LONG).show();
50                 }
51 
52             }
53         });
54 
55     }
56 
57     private void findView() {
58         et_regname = (EditText) findViewById(R.id.et_regname);
59         et_regpsw = (EditText) findViewById(R.id.et_regpsw);
60         bt_reg = (Button) findViewById(R.id.reg_button);
61     }
62 }
package com.example.sqlitedatabase;

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

/**
 * 這個類是sqlite數據路的一個幫助類,主要用來創建數據庫和表,或者多表進行修改(管理數據庫)
 * 
 * @author Administrator
 * 
 */
public class DBHelper extends SQLiteOpenHelper {
    private static final String DBNAME = "data.db";
    private static final int VERSION = 1;

    /**
     * 數據庫和oncreate方法都是在第一次調用getWritableDatabase() or getReadableDatabase()
     * 方法的時候才會創建數據庫和數據表
     * 
     * @param context
     */
    public DBHelper(Context context) {
        super(context, DBNAME, null, VERSION);
    }

    /**
     * SQLiteDatabase用來操作數據庫的一個對象,內部提供很多方法來操作
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table student(_id integer primary key autoincrement,name varchar(20)"
            + " not null,age integer check(age>=18 and age<=100),score integer);");
  db.execSQL("create table user(id integer primary key autoincrement,username varchar(64),"
          + "password varchar(64))");
    }

    /**
     * 當安裝的時候發現數據庫版本號比以前的數據庫版本號高,就會執行此方法來進行對 數據庫進行更新
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}
package com.example.sqlitedatabase;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.iotek.entity.Student;

public class StudentBiz {
    private DBHelper dbHelper = null;

    public StudentBiz(Context context) {
        dbHelper = new DBHelper(context);
    }

    /**
     * 添加一個學生
     * 
     * @param stu
     * @return
     */
    public long addStudent(Student stu) {
        /**
         * 這行代碼一定要有,getWritableDatabase()獲取SQLiteDatabase實例,才能創建出表
         */
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        /*
         * db.execSQL("insert into student(name,age,score)values(?,?,?)", new
         * Object[] { stu.getName(), stu.getAge(), stu.getScore() });
         */
        ContentValues values = new ContentValues();
        values.put("name", stu.getName());
        values.put("age", stu.getAge());
        values.put("score", stu.getScore());
        // insert into student() values()
        long id = db.insert("student", null, values);// 返回的是記錄的id
        Log.i("add", id+"");
        return id;
    }

    /**
     * 刪除一個學生
     * 
     * @param _id
     * @return
     */
    public int delStudent(int _id) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // db.execSQL("delete from student where _id=?", new Object[] { _id });
        int rows = db.delete("student", "_id=?", new String[] { _id + "" });// 返回影響的行數
        return rows;
    }

    /**
     * 更新一個學生信息
     * 
     * @param stu
     * @return
     */
    public int updateStudent(Student stu) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        /*
         * db.execSQL( "update student set name=?,age=?,score=? where _id=?",
         * new Object[] { stu.getName(), stu.getAge(), stu.getScore(),
         * stu.get_id() });
         */
        ContentValues values = new ContentValues();
        values.put("name", stu.getName());
        values.put("age", stu.getAge());
        values.put("score", stu.getScore());
        int rows = db.update("student", values, "_id=?",
                new String[] { stu.get_id() + "" });
        return rows;
    }

    /**
     * 得到所有的學生
     * 
     * @return
     */
    public List<Student> getAllStudents() {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        List<Student> stuList = new ArrayList<Student>();
        // 返回的是游標
        /*
         * Cursor cursor = db.rawQuery("select _id,name,age,score from student",
         * null);
         */
        Cursor cursor = db.query("student", new String[] { "_id", "name",
                "age", "score" }, null, null, null, null, null);
        while (cursor.moveToNext()) {
            int _id = cursor.getInt(cursor.getColumnIndex("_id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            int score = cursor.getInt(cursor.getColumnIndex("score"));
            stuList.add(new Student(_id, name, age, score));

        }
        return stuList;
    }

    /**
     * 根據學號查詢一個學生
     * 
     * @param _id
     * @return
     */
    public Student getStudentById(int _id) {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Student stu = null;
        // 返回的是游標
        /*
         * Cursor cursor = db.rawQuery(
         * "select _id,name,age,score from student where _id=?", new String[] {
         * _id + "" });
         */

        Cursor cursor = db.query("student", new String[] { "_id", "name", "age", "score" },
                "_id=?", new String[] { _id + "" }, null, null, null);
        if (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex("_id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            int score = cursor.getInt(cursor.getColumnIndex("score"));
            stu = new Student(id, name, age, score);

        }
        return stu;
    }

}
package com.example.sqlitedatabase;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class UserService {
    private DBHelper helper=null;
    public UserService(Context context) {
        helper = new DBHelper(context);
    }
    /**
     * 用戶登錄
     * 參數為用戶名和密碼,在activity從editTEXT中獲得
     * @param username
     * @param password
     * @return
     */
    public boolean Login(String username, String password) {
        SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase();
        String sql = "select * from user where username = ? and password = ? ";
        Cursor rawQuery = sqLiteDatabase.rawQuery(sql, new String[] { username,
                password });
        if (rawQuery.moveToFirst() == true) {
            rawQuery.close();
            return true;
        }
        return false;
    } 
     public boolean Register(String username,String password){
         SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase();
         sqLiteDatabase.execSQL("insert into user(username,password)values(?,?)", new
                  Object[] { username, password});     
        return true;
         
     }  
     
    
    
    
    
}
<RelativeLayout 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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/et_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:hint="請輸入名字" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/et_age"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/et_name"
        android:ems="10"
        android:hint="請輸入年齡(18-100)" />

    <EditText
        android:id="@+id/et_score"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/et_age"
        android:ems="10"
        android:hint="請輸入分數(數值類型)" />

    <Button
        android:id="@+id/bt_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/et_score"
        android:text="添加" />

    <Button
        android:id="@+id/bt_del"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bt_add"
        android:layout_alignBottom="@+id/bt_add"
        android:layout_toRightOf="@+id/bt_add"
        android:text="刪除" />

    <Button
        android:id="@+id/bt_update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bt_del"
        android:layout_alignBottom="@+id/bt_del"
        android:layout_toRightOf="@+id/bt_del"
        android:text="更新" />

    <Button
        android:id="@+id/bt_query"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/et_score"
        android:layout_toRightOf="@+id/bt_update"
        android:text="查詢" />

    <Button
        android:id="@+id/bt_all"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bt_query"
        android:layout_alignBottom="@+id/bt_query"
        android:layout_alignParentRight="true"
        android:text="全部" />

    <EditText
        android:id="@+id/et_query"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/bt_add"
        android:ems="10"
        android:hint="請輸入查詢的(整數值)" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/et_query" >
    </ListView>

</RelativeLayout>

 

item:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

 

login

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/bt_log"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/bt_reg"
        android:text="登陸" />

    <Button
        android:id="@+id/bt_reg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="注冊" />

    <TextView
        android:id="@+id/tv_psw"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bt_log"
        android:layout_marginBottom="36dp"
        android:layout_toLeftOf="@+id/bt_log"
        android:text="密碼" />

    <EditText
        android:id="@+id/et_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/tv_psw"
        android:layout_alignBottom="@+id/tv_psw"
        android:layout_alignLeft="@+id/bt_log"
        android:hint="請輸入密碼"
        android:ems="10" />

    <EditText
        android:id="@+id/et_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="52dp"
        android:layout_toRightOf="@+id/tv_username"
        android:hint="請輸入用戶名"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/tv_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/et_username"
        android:layout_alignBottom="@+id/et_username"
        android:layout_alignRight="@+id/tv_psw"
        android:text="用戶名" />

</RelativeLayout>

register:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/reg_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="101dp"
        android:layout_marginTop="177dp"
        android:text="注冊" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="32dp"
        android:text="用戶名" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="28dp"
        android:text="密碼" />

    <EditText
        android:id="@+id/et_regname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_marginLeft="24dp"
        android:layout_toRightOf="@+id/textView1"
        android:ems="10"
        android:hint="請注冊您的用戶名"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/et_regpsw"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView2"
        android:layout_alignBottom="@+id/textView2"
        android:layout_alignLeft="@+id/et_regname"
        android:ems="10"
        android:hint="請注冊您的密碼"
        android:inputType="textPassword" >

        <requestFocus />
    </EditText>

</RelativeLayout>

 

 

以上就是整個項目的代碼,整個流程是在Helper類里連接數據庫,然后通過構造方法把參數傳遞,在邏輯層(增刪改查,登陸注冊方法sql語句)實例化helper打開數據庫,再在Acitivity層做判斷,實現button監聽,以及Adapter的構造,Listview的刷新,Acitivity之間通過Intent切換,采用的是不帶內容參數的傳遞,只需要界面切換即可,項目中還有一些細節沒有進一步處理,基本的bug已解決,如輸入的id為空或者不存在,根據id查詢會Toast提醒沒有此用戶,還有一些細節感興趣的朋友可以自己進行維護,謝謝大家。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM