关于这个题目网上很多,但真正适合入门的寥寥无几。特对于此种情况,此文章将从最简单的入门做起,然后一步步精通。其实也不能说精通,熟练应用即可。
sqlite,一个小型的数据库,适用于手机端,利用他可以实现联系人的存储、帐号,密码的存储。不受格式限制,存储自由。
只要是数据库,就会有增删改查的操作,而增删改查只是几行代码的问题。只是这儿有个问题,sqlite 除了实现在本地存储之外,能不能实现远程的控制,关于这一点我还没有弄清楚,许多大牛的博客讲解的很少,这点以后会补充。
1. SQLiteOpenHelper 的继承(新建一个.java文件)。
代码:
package com.example.root.qqfinally; /** * Created by root on 18-5-12. */ import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DatebaseHelper extends SQLiteOpenHelper { //数据库名称 private static final String DATABASE_NAME="jscsd.db"; //数据库版本号 private static final int DATABASE_VERSION=1; //数据库SQL语句 添加一个表 public DatebaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, DATABASE_NAME, factory, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("create table username( name varchar(5) primary key,password varchar(30))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("---版本更新---"+oldVersion+"--->"+newVersion); } } 2.MainActivity.java
package com.example.root.qqfinally; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.os.Bundle; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.app.AlertDialog; import android.os.Bundle; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.app.AlertDialog; public class MainActivity extends Activity { private TextView textview; //数据库名称 private static final String DATABASE_NAME="jscsd.db"; //数据库版本号 private static final int DATABASE_VERSION=1; //表名 private static final String TABLE_NAME="username"; private DatebaseHelper databaseHelper; private SQLiteDatabase db; private Button button1; private EditText nameText,passText; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); nameText = (EditText) findViewById(R.id.username); passText = (EditText) findViewById(R.id.pasw); button1 = (Button) findViewById(R.id.denglu); // textview=(TextView)findViewById(R.id.zhuce); // textview.setOnClickListener(new OnClickListener(){ // // @Override // public void onClick(View arg0) { // // TODO Auto-generated method stub // intent=new Intent(MainActivity.this,zhuce.class); // startActivity(intent); // } // // }); //启动注册页面 TextView textview = (TextView) findViewById(R.id.zhuce); textview.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent a = new Intent(MainActivity.this, zhuceActivity.class); startActivity(a); } }); //启动随便看看页面 TextView textview1 = (TextView) findViewById(R.id.suibian); textview1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent a = new Intent(MainActivity.this, suibiankankanActivity.class); startActivity(a); } }); button1.setOnClickListener(new LoginListener()); } class LoginListener implements OnClickListener{ public void onClick(View v){ String nameString =nameText.getText().toString(); String passString=passText.getText().toString(); if(nameString.equals("")||passString.equals("")) { //弹出消息框 new AlertDialog.Builder(MainActivity.this).setTitle("错误") .setMessage("帐号或密码不能空").setPositiveButton("确定", null) .show(); }else{ isUserinfo(nameString,passString); } } } public Boolean isUserinfo(String name,String pass) { String nameString=name; String passString=pass; databaseHelper=new DatebaseHelper(MainActivity.this,DATABASE_NAME,null,DATABASE_VERSION); db = databaseHelper.getReadableDatabase(); try{ Cursor cursor=db.query(TABLE_NAME, new String[]{"name","password"},"name=?",new String[]{nameString},null,null,"password"); while(cursor.moveToNext()) { String password=cursor.getString(cursor.getColumnIndex("password")); if(passString.equals(password)) { new AlertDialog.Builder(MainActivity.this).setTitle("正确") .setMessage("成功登录").setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Intent a=new Intent(MainActivity.this,zhuActivity.class); startActivity(a); } }).show(); break; } else { Toast.makeText(this, "用户名密码不正确",Toast.LENGTH_LONG).show(); break; } } }catch(SQLiteException e){ CreatTable(); } return false; } private void CreatTable() { // TODO Auto-generated method stub String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (name varchar(30) primary key,password varchar(30));"; try{ db.execSQL(sql); }catch(SQLException ex){} } // @Override // public boolean onCreateOptionsMenu(Menu menu) { // // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.main, menu); // return true; // } }3.mainactivity.xml
<?xml version="1.0" encoding="utf-8"?> <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:orientation="vertical" android:background="#74d6e6" tools:context=".MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/banner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher" android:layout_gravity="center" android:layout_marginTop="90sp"/> <EditText android:id="@+id/username" android:layout_gravity="center" android:layout_marginTop="30sp" android:hint="用户名" android:layout_width="300sp" android:layout_height="wrap_content"/> <EditText android:id="@+id/pasw" android:layout_gravity="center" android:layout_marginTop="30sp" android:hint="密码" android:password="true" android:layout_width="300sp" android:layout_height="wrap_content"/> <Button android:id="@+id/denglu" android:layout_width="300sp" android:text="登录" android:layout_marginTop="30sp" android:layout_height="wrap_content" android:layout_gravity="center"/> </LinearLayout> <RelativeLayout android:id="@+id/relaativelayout1" android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:layout_height="wrap_content" android:layout_marginBottom="10sp"> <View android:id="@+id/view1" android:layout_width="300sp" android:layout_height="1sp" android:background="#d7f2f7" android:layout_centerHorizontal="true" /> <View android:id="@+id/view2" android:layout_width="1sp" android:layout_height="40sp" android:background="#d7f2f7" android:layout_centerInParent="true" android:layout_below="@+id/view1"/> <TextView android:id="@+id/zhuce" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" android:textSize="20sp" android:layout_toLeftOf="@+id/view2" android:layout_marginRight="30sp" android:layout_marginTop="10sp" /> <TextView android:id="@+id/suibian" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="随便看看" android:textSize="20sp" android:layout_toRightOf="@+id/view2" android:layout_marginLeft="30sp" android:layout_marginTop="10sp" /> </RelativeLayout> </RelativeLayout> 4.注册界面
package com.example.root.qqfinally; import android.app.Activity; import android.content.ContentValues; import android.os.Bundle; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class zhuceActivity extends Activity { private EditText edittext1,edittext2,edittext3; private Button button; private DatebaseHelper databaseHelper; //数据库名称 private static final String DATABASE_NAME="jscsd.db"; //数据库版本号 private static final int DATABASE_VERSION=1; private static final String TABLE_NAME="username"; private SQLiteDatabase db; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_zhuce); edittext1=(EditText)findViewById(R.id.editview1); edittext2=(EditText)findViewById(R.id.editview2); edittext3=(EditText)findViewById(R.id.editview3); button=(Button)findViewById(R.id.tijiao); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String namestring = edittext1.getText().toString(); String passstring = edittext2.getText().toString(); String repassstring=edittext3.getText().toString(); if(passstring.equals(repassstring)) { databaseHelper=new DatebaseHelper(zhuceActivity.this,DATABASE_NAME,null,DATABASE_VERSION); db = databaseHelper.getReadableDatabase(); db.execSQL("insert into username (name,password) values(?,?)",new String[]{namestring,passstring}); insertData (databaseHelper.getReadableDatabase(),edittext1,edittext2,edittext3); Toast.makeText(zhuceActivity.this, "注册成功!", Toast.LENGTH_LONG).show(); Intent b=new Intent(zhuceActivity.this,MainActivity.class); startActivity(b); } else { Toast.makeText(zhuceActivity.this,"两次密码不一致", Toast.LENGTH_LONG).show(); } } private void insertData(SQLiteDatabase readableDatabase, EditText edittext1, EditText edittext2, EditText edittext3) { ContentValues values =new ContentValues(); values.put("username", String.valueOf(edittext1)); values.put("password", String.valueOf(edittext2)); values.put("password", String.valueOf(edittext3)); readableDatabase.insert("zhuce",null,values); } }); } }
5.注册.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/teview1" android:layout_width="fill_parent" android:layout_height="70sp" android:text="注册" android:background="#74d6e6" android:textSize="40sp" android:paddingTop="10sp" android:paddingLeft="20sp"/> <EditText android:id="@+id/editview1" android:layout_marginTop="50sp" android:layout_width="300sp" android:layout_height="wrap_content" android:layout_gravity="center" android:hint="用户名"/> <EditText android:id="@+id/editview2" android:layout_marginTop="30sp" android:layout_width="300sp" android:layout_height="wrap_content" android:layout_gravity="center" android:hint="密码" android:password="true"/> <EditText android:id="@+id/editview3" android:layout_marginTop="30sp" android:layout_width="300sp" android:layout_height="wrap_content" android:layout_gravity="center" android:hint="确认密码" android:password="true"/> <!--<EditText--> <!--android:id="@+id/editview4"--> <!--android:layout_marginTop="50sp"--> <!--android:layout_width="300sp"--> <!--android:layout_height="wrap_content"--> <!--android:layout_gravity="center"--> <!--android:hint="电子邮箱"/>--> <Button android:id="@+id/tijiao" android:layout_width="300sp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="30sp" android:text="提交注册"/> </LinearLayout>
6.效果自行观看,代码我是清册的,可以正常运行。如果直接复制的话会有错误,首先是包名,要改称自己的,还应该新建一个activity,有啥问题可以加我qq联系305591377