第一步:创建数据库,创建表,(添加、修改、删除)方法!

package example.gznprojklc;import android.content.ContentValues;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class SqliteDBHelper extends SQLiteOpenHelper {// 创建库public static final String CREATE_DATABASE = "MonitorMeasuration.db";// 表名public static final String USER_TABLE = "Users";public static final String FAULTSURFACE_TABLE = "FaultSurface";public static final String TUNNEL_TABLE = "Tunnel";public static final String POINT_TABLE = "Point";public static final String SURFACESUBSIDENCE_TABLE = "SurfaceSubsidence";public static final String DISPLACEMENT_TABLE = "Displacement";public static final String VAULTSETTLEMENT_TABLE = "ValutSettlement";// 创建表public static final String CREATE_USER_TABLE = "CREATE TABLE "+ USER_TABLE+ " (ID INTEGER PRIMARY KEY AUTOINCREMENT,UserName TEXT,UserPwd TEXT,DateTime TEXT,Reserve1 TEXT,Reserve2 TEXT,Reserve3 TEXT);";private SQLiteDatabase db;public SqliteDBHelper(Context context) {super(context, CREATE_DATABASE, null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {this.db = db;db.execSQL(CREATE_USER_TABLE);}// 关闭数据库public void Close() {if (db != null) {db.close();}}// 添加数据public long Insert(ContentValues values, String TableName) {SQLiteDatabase db = this.getWritableDatabase();long count = db.insert(TableName, null, values);if (count == -1) {count = -1;} else {count = 1;}db.close();return count;}// 隧道删除数据public void Tunneldelete(int id) {if (db == null)db = this.getWritableDatabase();db.execSQL("delete from SurfaceSubsidence where ID=" + id);db.close();}// 断面删除数据public void Pointsdelete(int id) {if (db == null)db = this.getWritableDatabase();db.execSQL("delete from ValutSettlement where ID=" + id);db.close();}// 测点删除数据public void Testdelete(int id) {if (db == null)db = this.getWritableDatabase();db.execSQL("delete from Displacement where ID=" + id);db.close();}// 地表沉降public void update(int id, ContentValues values, String TableName,String whereID) {SQLiteDatabase db = this.getWritableDatabase();String where = whereID + " = ?";String[] whereValue = { Integer.toString(id) };db.update(TableName, values, where, whereValue);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

  第二步:用户登录后台代码(注:用户登录是在有网络的时候才能登录,第一次登录成功后第二次可以关闭网络登录,这里是调用了Asp.Net平台开发的WebService接口)。
在这里需要导入一个jar包:ksoap2-android-assembly-2.3-jar-with-dependencies.jar 放在libs文件夹下即可!

package example.gznprojklc;import java.text.SimpleDateFormat;import java.util.Date;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.MarshalBase64;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.AndroidHttpTransport;import android.net.ConnectivityManager;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class LoginActivity extends Activity {public SqliteDBHelper helper;public EditText txtUserName;public EditText txtUserPwd;public Button btnLogin;public SQLiteDatabase db;public int userId;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login);txtUserName = (EditText) findViewById(R.id.txtUserName);txtUserPwd = (EditText) findViewById(R.id.txtUserPwd);txtUserName.requestFocus();txtUserName.setCursorVisible(true);btnLogin = (Button) findViewById(R.id.btnLogin);btnLogin.setOnClickListener(loginlistener);}// 用户登录OnClickListener loginlistener = new OnClickListener() {@Overridepublic void onClick(View v) {String url = "http://117.34.91.188:8055/WebServices/login.asmx";String nameSpace = "http://tempuri.org/";String SOAP_ACTION = "http://tempuri.org/LoginInfo";String method = "LoginInfo";String userName = txtUserName.getText().toString();String userPwd = txtUserPwd.getText().toString();SoapObject request = new SoapObject(nameSpace, method);request.addProperty("username", userName);request.addProperty("pwd", userPwd);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = request;(new MarshalBase64()).register(envelope);AndroidHttpTransport transport = new AndroidHttpTransport(url);envelope.dotNet = true;try {if (isOpenNetWork()) {transport.call(SOAP_ACTION, envelope);if (envelope.getResponse() != null) {if (userName.equals("") || userPwd.equals("")) {ShowDialog("用户名或者密码不能为空");} else {Object object = envelope.getResponse();String str = object.toString();if (str.equals("anyType{}")) {ShowDialog("登录失败用户名或者密码错误");} else {userId = Integer.parseInt(str.toString());ListSelectActivity.id = userId;AddDepth.id=userId;CommonSpinner.userId=userId;ContentValues values = new ContentValues();SimpleDateFormat fort = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date curDate = new Date(System.currentTimeMillis());// 获取当前时间String time = fort.format(curDate);values.put("UserName", userName);values.put("UserPwd", userPwd);values.put("DateTime", time);values.put("Reserve1", "");values.put("Reserve2", "");values.put("Reserve3", "");helper = new SqliteDBHelper(getApplicationContext());db = helper.getReadableDatabase();Cursor c = db.rawQuery("select * from Users",null);if (c.getCount() == 0) {helper.Insert(values,helper.USER_TABLE);}Intent intent = new Intent();intent.setClass(LoginActivity.this,ListSummersActivity.class);startActivity(intent);Toast.makeText(getApplicationContext(), "登录成功",Toast.LENGTH_SHORT).show();}}}} else {if (userName.equals("") || userPwd.equals("")) {ShowDialog("请输入用户名或者密码");} else {if (IsLogin(userName, userPwd)) {Toast.makeText(getApplicationContext(), "本地登录成功",Toast.LENGTH_SHORT).show();Intent intent = new Intent();intent.setClass(LoginActivity.this,ListSummersActivity.class);startActivity(intent);} else {ShowDialog("登录失败用户名或者密码错误");}}}} catch (Exception e) {e.printStackTrace();Toast.makeText(getApplicationContext(), "网络或者服务器断开不能登录",Toast.LENGTH_SHORT).show();}}};// 用户登录public boolean IsLogin(String Name, String Pwd) {helper = new SqliteDBHelper(this);db = helper.getReadableDatabase();Cursor c = db.rawQuery("select * from Users where UserName=? and UserPwd=?",new String[] { Name.toString(), Pwd.toString() });if (c.moveToFirst() == true) {c.close();return true;}return false;}// 信息提示private void ShowDialog(String message) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage(message);builder.setPositiveButton("确定", null);builder.create().show();}// 网络监测private boolean isOpenNetWork() {ConnectivityManager connManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);if (connManager.getActiveNetworkInfo() != null) {return connManager.getActiveNetworkInfo().isAvailable();}return false;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.login, menu);return true;}}

  第三步:用户登录界面前台设计(注:布局建议使用RelativeLayout布局和LinearLayout布局,交叉布局)

<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".LoginActivity" >    <TextView        android:id="@+id/TextView01"        android:layout_width="80sp"        android:layout_height="40dp"        android:textSize="20sp"        android:gravity="center_vertical|left"                android:layout_alignLeft="@+id/textView1"        android:layout_below="@+id/txtUserName"        android:layout_marginTop="10dp"        android:text="@string/txt_Pwd" />    <Button        android:id="@+id/btnLogin"        android:layout_width="wrap_content"        android:layout_height="45dp"        android:layout_alignLeft="@+id/TextView01"        android:layout_alignRight="@+id/txtUserPwd"        android:layout_below="@+id/txtUserPwd"        android:textSize="20sp"        android:layout_marginTop="42dp"        android:text="@string/btn_Login" />    <TextView        android:id="@+id/textView2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="29dp"        android:gravity="center"        android:text="@string/txt_Title"        android:textSize="35sp" />    <EditText        android:id="@+id/txtUserName"        android:layout_width="150sp"        android:layout_height="50dp"        android:layout_alignRight="@+id/textView2"        android:layout_alignTop="@+id/textView1"        android:layout_toRightOf="@+id/textView1"        android:hint=""        android:ems="10" >    </EditText>    <TextView        android:id="@+id/textView1"        android:layout_width="80sp"        android:layout_height="40dp"        android:gravity="center_vertical|left"        android:layout_alignLeft="@+id/textView2"        android:layout_below="@+id/textView2"        android:layout_marginLeft="14dp"        android:layout_marginTop="48dp"        android:text="@string/txt_Name"        android:textSize="20sp" />    <EditText        android:id="@+id/txtUserPwd"        android:layout_width="150sp"        android:layout_height="50dp"        android:inputType="textPassword"        android:layout_alignLeft="@+id/txtUserName"        android:layout_alignRight="@+id/txtUserName"        android:layout_alignTop="@+id/TextView01"        android:hint=""        android:ems="10" /></RelativeLayout>

  到这里的话,操作数据库用户登录基本就成功了!

更多相关文章

  1. Android EditText 密码输入框可见性设置
  2. 为TabLayout设置自定义布局
  3. android 密码加密
  4. 记住密码
  5. android动态布局方法总结
  6. Android——布局的一些动态设置
  7. Android 记住密码和自动登录界面的实现(SharedPreferences 的用法
  8. Android动态添加布局
  9. 解决Android Studio XML布局格式化无法换行的问题

随机推荐

  1. Appium的简单使用(Android参数获取)
  2. 安卓常用参数笔记
  3. android的中的触感反馈
  4. Android(安卓)envsetup.sh剖析
  5. Android开发笔记
  6. android studio信鸽推送10004错误
  7. Android(安卓)APK JNI sample (JAVA JNI)
  8. android 新用户判定
  9. Android(安卓)签名和发布应用程序
  10. Android中使用Gesture加入手势操作