zoukankan      html  css  js  c++  java
  • 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: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>
    

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

  • 相关阅读:
    大聊Python----SocketServer
    2、MySQL常见数据库引擎及比较?
    大聊Python----通过Socket实现简单的ssh客户端
    1、列举常见的关系型数据库和非关系型都有那些?
    uva12563 Jin Ge Jin Qu hao(01背包)
    UVA 12174 Shuffle(滑动窗口)
    C++中substr函数的用法
    uva11078
    11462 Age Sort(计数排序)
    UVA 11988 Broken Keyboard (a.k.a. Beiju Text) (链表,模拟)
  • 原文地址:https://www.cnblogs.com/xiaoyao095/p/3655956.html
Copyright © 2011-2022 走看看