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>
    

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

  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/xiaoyao095/p/3655956.html
Copyright © 2011-2022 走看看