由于自己的Java和Android比较业余,仅仅为了实现功能,美观和细节上不是很注意。所以代码中还存在诸多问题,有很多思路不清晰的地方,所以把源代码未经删改的直接呈现,希望以后重新看此程序能有所收获。
MainActivity.java
package com.example.clientui_1;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private Mysql m;
SharedPreferences sp ;//sp为共享数据对象
Button signin_B;
Button login_B;
Editor edit ;
EditText etUserName;
EditText etUserPwd;
String UserName = null; //初始化username
String UserPwd = null; //初始化userpwd
//CheckBox cb;
private EditText Username, Password1, Password2, Userid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化函数
m = new Mysql(MainActivity.this, "Admin", null, 1);
}
public void method(View v){
switch (v.getId()) {
case R.id.signin:
//当前页面对象,目标页面对象
Intent intentSignin = new Intent(MainActivity.this, SigninActivity.class);
//跳转
startActivity(intentSignin);
break;
case R.id.login:
// 获得可读的数据库助手
SQLiteDatabase read = m.getReadableDatabase();
//获取账号密码输入框中的数据
String name = etUserName.getText().toString().trim();
String pwd = etUserPwd.getText().toString().trim();
//判断账号密码是否正确----查询数据库中是否存在账号密码
//================================================================================
// 创建装ID的数组
String[] selectionArgs = { name , pwd };
// ? 是占位符传参
Cursor cursor = read.rawQuery(
"SELECT USERNAME,PASSWORD,USERID FROM Admin WHERE USERNAME = ? AND PASSWORD = ?;",
selectionArgs);
String pwd_right = "";
String name_right = "";
while (cursor.moveToNext()) {
//查到数据就从文本框获得内容
name_right = cursor.getString(0);
pwd_right = cursor.getString(1);
}
//==================================================================================
if(pwd_right.equals(pwd) && name_right.equals(name)){
//if("123".equals(name)){
// 显示登录成功
Toast.makeText(MainActivity.this, "登录成功", 0).show();
//login_B = (Button) findViewById(R.id.login);
Intent intentLogin = new Intent(MainActivity.this, LoginActivity.class);
//跳转
startActivity(intentLogin);
}
else
{
Toast.makeText(MainActivity.this, "用户名或密码错误", 0).show();
}
break;
}
}
private void init() {
//获取共享数据对象
sp = getSharedPreferences("text", Context.MODE_PRIVATE);
//获取编辑者对象
edit = sp.edit();
//找控件
etUserName = (EditText) findViewById(R.id.editText1);//这里是用户名控件绑定
etUserPwd = (EditText) findViewById(R.id.editText2);//这里是密码的控件绑定
}
}
/* 绑定控件
signin_B = (Button) findViewById(R.id.signin);
//设置监听方法1
signin_B.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//当前页面对象,目标页面对象
Intent intentSignin = new Intent(MainActivity.this, SigninActivity.class);
//跳转
startActivity(intentSignin);
}
});
//设置监听方法2
login_B.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//当前页面对象,目标页面对象
Intent intentLogin = new Intent(MainActivity.this, LoginActivity.class);
//跳转
startActivity(intentLogin);
}
});*/
Mysql.java
package com.example.clientui_1;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class Mysql extends SQLiteOpenHelper{
public Mysql(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE Student(" +
"ID CHAR(50) ," +
"NAME CHAR(50) ," +
"AGE CHAR(50) ," +
"INFO CHAR(50));");
db.execSQL("CREATE TABLE Admin(" +
"USERNAME CHAR(50) ," +
"PASSWORD CHAR(50) ," +
"USERID CHAR(50));");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
SigninActivity.java
package com.example.clientui_1;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class SigninActivity extends Activity{
private Mysql m;
private EditText Username, Password1, Password2, Userid;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//加载布局
setContentView(R.layout.signin_ui);
Username = (EditText) findViewById(R.id.editText1);
Password1 = (EditText) findViewById(R.id.editText2);
//Password2 = (EditText) findViewById(R.id.editText3);
Userid = (EditText) findViewById(R.id.editText4);
m = new Mysql(SigninActivity.this, "Admin", null, 1);
}
public void enter(View v) {
// 获得可读的数据库助手
SQLiteDatabase read = m.getReadableDatabase();
// 获取文本框中的数据
String username_t = Username.getText().toString().trim();
String password_t = Password1.getText().toString().trim();
String userid_t = Userid.getText().toString().trim();
// 创建装ID的数组
String[] selectionArgs = { username_t};
String[] string = {username_t,password_t,userid_t};
// ? 是占位符传参
Cursor cursor = read.rawQuery(
"SELECT USERNAME FROM Admin WHERE USERNAME = ?;",
selectionArgs);
// 检测有没有查到数据
String username = "";
while (cursor.moveToNext()) {
//没有查到数据就从文本框获得内容
username = cursor.getString(0);
}
// 将字符串 放到 EditText文本内容当中
if(userid_t.length()==18)
{
if(username.length() == 0)
{
// 获得可写的数据库助手
SQLiteDatabase wd = m.getWritableDatabase();
wd.execSQL(
"INSERT INTO Admin (USERNAME, PASSWORD, USERID) VALUES (?,?,?);",
string);
// 关闭数据库连接
wd.close();
Toast.makeText(SigninActivity.this, "注册成功,请返回登录", 0).show();
//当前页面对象,目标页面对象
Intent intentM = new Intent(SigninActivity.this, MainActivity.class);
//跳转
startActivity(intentM);
}
else{
//提示出错
Toast.makeText(SigninActivity.this, "账户已存在", 0).show();
}
}
else{
//提示出错
Toast.makeText(SigninActivity.this, "请输入正确的身份证号码", 0).show();
}
// 关闭游标
cursor.close();
// 关闭数据库助手
read.close();
}
}
LoginActivity.java
package com.example.clientui_1;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity{
private Mysql m;
private EditText Sid, Sname, Sage, Sinfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//加载布局
setContentView(R.layout.login_ui);
Sid = (EditText) findViewById(R.id.editText1);
Sname = (EditText) findViewById(R.id.editText2);
Sage = (EditText) findViewById(R.id.editText3);
Sinfo = (EditText) findViewById(R.id.editText4);
m = new Mysql(LoginActivity.this, "student", null, 1);
}
public void delete(View v) {
// 点击按钮时。获取文本框中的内容
String id = Sid.getText().toString().trim();
// 将获取到的内容放到 字符串数组中
String string[] = {id};
// 获得可写数据库助手
SQLiteDatabase wd = m.getWritableDatabase();
// 发送SQL语句,传参方式,占位符传参
wd.execSQL(
" DELETE FROM Student WHERE ID = ?;",
string);
// 关闭数据库连接
wd.close();
Toast.makeText(LoginActivity.this, "删除数据成功", 0).show();
}
public void update(View v) {
// 点击按钮时。获取文本框中的内容
String id = Sid.getText().toString().trim();
String name = Sname.getText().toString().trim();
String age = Sage.getText().toString().trim();
String info = Sinfo.getText().toString().trim();
// 将获取到的内容放到 字符串数组中
String string[] = {name,age,info,id};
// 获得可写数据库助手
SQLiteDatabase wd = m.getWritableDatabase();
// 发送SQL语句,传参方式,占位符传参
wd.execSQL(
"UPDATE Student SET NAME = ?,AGE = ?,INFO = ? WHERE ID = ?;",
string);
// 关闭数据库连接
wd.close();
Toast.makeText(LoginActivity.this, "修改数据成功", 0).show();
}
/*
* 查询数据
*/
public void select(View v) {
// 获得可读的数据库助手
SQLiteDatabase read = m.getReadableDatabase();
// 获取文本框中的数据
String id = Sid.getText().toString().trim();
// 创建装ID的数组
String[] selectionArgs = { id };
// ? 是占位符传参
Cursor cursor = read.rawQuery(
"SELECT ID,NAME,AGE,INFO FROM student WHERE id = ?;",
selectionArgs);
String stuID = "";
String stuName = "";
String stuAge = "";
String stuInfo = "";
// 检测有没有查到数据
while (cursor.moveToNext()) {
stuID = cursor.getString(0);
stuName = cursor.getString(1);
stuAge = cursor.getString(2);
stuInfo = cursor.getString(3);
}
// 将字符串 放到 EditText文本内容当中
Sid.setText(stuID);
Sname.setText(stuName);
Sage.setText(stuAge);
Sinfo.setText(stuInfo);
// 关闭游标
cursor.close();
// 关闭数据库助手
read.close();
if(Sid.length()!=0){
Toast.makeText(LoginActivity.this, "查询成功", 0).show();
}
else{
Toast.makeText(LoginActivity.this, "没有数据", 0).show();
}
}
/*
* 插入数据
*/
public void insert(View v) {
// 点击按钮时。获取文本框中的内容
String id = Sid.getText().toString().trim();
String name = Sname.getText().toString().trim();
String age = Sage.getText().toString().trim();
String info = Sinfo.getText().toString().trim();
// 将获取到的内容放到 字符串数组中
String string[] = { id, name, age, info };
// 获得可写的数据库助手
SQLiteDatabase wd = m.getWritableDatabase();
// 发送SQL语句,传参方式,占位符传参
wd.execSQL(
"INSERT INTO student (ID, NAME, AGE,INFO) VALUES (?,?,?,?);",
string);
// 关闭数据库连接
wd.close();
Toast.makeText(LoginActivity.this, "插入数据成功", 0).show();
}
}
实现界面效果: