android中的Sqlite数据库操作

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

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);
	}

	@Override
	public 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);
	}

	@Override
	public 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;

	@Override
	protected 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() {

		@Override
		public 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;
	}

	@Override
	public 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:andro
    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:
        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:
        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:
        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:
        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:
        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:
        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>

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