小波Linux安卓Sqlite資料庫實現用戶登錄註冊,通俗易懂!

来源:http://www.cnblogs.com/xiaobo-Linux/archive/2016/05/29/5540106.html
-Advertisement-
Play Games

看了很多別人寫的安卓SQlite數據的操作代碼,都是浮雲,瞎弄!一點也不通俗易懂,我覺得我寫的不錯,而且安卓項目也用上了,所以在博客園裡保存分享一下! 一SQLiteHelper類是自動重載增刪改查函數的,另外一個是自己定義的類,用Context傳值。我用的是Fragment,用Activity的話 ...


看了很多別人寫的安卓SQlite數據的操作代碼,都是浮雲,瞎弄!一點也不通俗易懂,我覺得我寫的不錯,而且安卓項目也用上了,所以在博客園裡保存分享一下!

 

一SQLiteHelper類是自動重載增刪改查函數的,另外一個是自己定義的類,用Context傳值。我用的是Fragment,用Activity的話吧getActivity()去掉!

實現了用戶登錄註冊的功能!

http://www.cnblogs.com/xiaobo-Linux/ (小波)趙存檔QQ463431476

public class MySqliteHelper extends SQLiteOpenHelper {

    //自定義訪問sqlite
    public MySqliteHelper(Context context) {
        super(context, "userdb.db", null, 3);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
     //http://www.cnblogs.com/xiaobo-Linux/ (小波)趙存檔QQ463431476
        db.execSQL("create table users(id int primary key ,name text,pwd text)");
          
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        
    }
 
}

 

public class Userlogin extends Activity implements  OnClickListener{
    
       
       private MySqliteHelper helper;
       
       Button sign;  
       Button reg;
       
       String  name;
       String  mypwd;
       private EditText user;
       private EditText pwd;
       
      
   //http://www.cnblogs.com/xiaobo-Linux/ (小波)趙存檔QQ463431476
 
   public void onCreate(Bundle savedInstanceState) {  
       super.onCreate(savedInstanceState);
       //設置狀態欄顏色 
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
       getWindow().setStatusBarColor(getResources().getColor(R.color.StatusBar));   
       //設置actionbar顏色 
       ActionBar actionBar = getActionBar();
       actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0099CC")));
       setContentView(R.layout.login);
       
       findViewById(R.id.button1).setOnClickListener(this);
       findViewById(R.id.button2).setOnClickListener(this);
       user = (EditText)findViewById(R.id.editText1);
       pwd=(EditText)findViewById(R.id.editText2);
     
   }  
 
   
 public void  insert()
 {
     

      helper = new MySqliteHelper(getApplicationContext());
      SQLiteDatabase db=helper.getWritableDatabase();    
      
      //查詢一下,是否用戶名重覆
       String sql1 = "select * from users";
       Cursor cursor = db.rawQuery(sql1, null);
       while (cursor.moveToNext()) {
          //第一列為id
          name =  cursor.getString(1); //獲取第2列的值,第一列的索引從0開始
          mypwd = cursor.getString(2);//獲取第3列的值
         
      }
      
     if((user.getText().toString().equals(name)))
         {
                Toast.makeText(this, "已存在此用戶,請重新註冊", Toast.LENGTH_SHORT).show(); 
         }
         else
          {
             String sql2 = "insert into users(name,pwd) values ('"+user.getText().toString()+"','"+pwd.getText().toString()+"')";
                db.execSQL(sql2);
               Toast.makeText(this, "註冊成功!", Toast.LENGTH_SHORT).show(); 
          }
     
 }
 
  public void select()
 {
     
      helper = new MySqliteHelper(getApplicationContext());
      SQLiteDatabase db=helper.getWritableDatabase();
        
      String sql = "select * from users";
      
      Cursor cursor = db.rawQuery(sql, null);
      while (cursor.moveToNext()) {
          //第一列為id
          name =  cursor.getString(1); //獲取第2列的值,第一列的索引從0開始
          mypwd = cursor.getString(2);//獲取第3列的值
         
      }
      
      if((user.getText().toString().equals(name))&&(pwd.getText().toString().equals(mypwd)))
         {
                Toast.makeText(this, "用戶驗證成功", Toast.LENGTH_SHORT).show(); 
                Intent MainActivity = new Intent();
                MainActivity .setClass(this,MainActivity.class);
                  this.startActivity(MainActivity);  
                  finish();//退出
         }
         else
          {
                Toast.makeText(this, "賬號或者密碼錯誤,請重新輸入", Toast.LENGTH_SHORT).show();  
          }
      
                cursor.close();
                db.close();
                //Toast.makeText(this, "已經關閉資料庫", Toast.LENGTH_SHORT).show();  
 }


@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
       switch(v.getId()){  
        case R.id.button1:  
            select();
         
            break;  
        case R.id.button2:  
            insert();
            break;  
         }
 
}
 
    

http://www.cnblogs.com/xiaobo-Linux/ (小波)趙存檔QQ463431476

效果如下:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 動畫 animate() 01.animate()方法的簡單使用 有些複雜的動畫通過之前學到的幾個動畫函數是不能夠實現,這時候就是強大的animate方法了。 操作一個元素執行3秒的淡入動畫,對比下一下2組動畫設置的區別。 顯而易見,animate方法更加靈活了,可以精確的控制樣式屬性從而執行動畫。 ...
  • LN :跟著W3School學HTML 007 內容參考自W3School [HTML 教程][1] HTML文本格式化 | 標簽 | 描述 | | | : | | `` | 定義粗體文本 | | `` | 定義大號字 | | `` | 定義著重文字 | | `` | 定義斜體字 | | `` | ...
  • 一.js的數據類型和變數 JavaScript 有六種數據類型。主要的類型有 number、string、object 以及 Boolean 類型,其他兩種類型為 null 和 undefined。 String 字元串類型:字元串是用單引號或雙引號來說明的。(使用單引號來輸入包含引號的字元串。)如 ...
  • 最近除了做業務,也在嘗試學習h5和移動端,在這個過程中,學到了很多,利用h5和canvas做了一個愛心魚的小游戲。 "點這裡去玩一下" PS: 貌似有點閃屏,親測多刷新兩下就好了==。代碼在本地跑都不會閃,放到博客里就閃了,我也不知道為什麼。。。回頭我再看看是什麼問題。 另外,我把代碼放到githu ...
  • 學習要點: 1.搜索區 2.插入大圖 3.搜索框 主講教師:李炎恢 本章主要開始使用學慣用 HTML5 和 CSS3 來構建 Web 頁面,第一個項目採用 PC 端固定佈局來實現。 一.搜索區 本節課,我們接著 header 頭部往下,來設計一塊搜索區。這個區域,可以是廣告大圖,也可以是用戶註冊,也 ...
  • 效果:http://hovertree.com/texiao/jquery/71/代碼如下: 轉自:http://hovertree.com/h/bjaf/n781jmfy.htm 特效彙總:http://www.cnblogs.com/roucheng/p/texiao.html ...
  • 大圖:http://images2015.cnblogs.com/blog/730765/201605/730765-20160529113743209-72994369.png ...
  • 1. PCH文件概述 PCH文件是一種預編譯頭文件(一般擴展名為.PCH),是把一個工程中較穩定的代碼預先編譯好放在一個文件(.PCH)里。這些預先編譯好的代碼可以是任何的C/C++代碼--甚至可以是inline函數,只它們在整個工程中是較為穩定的,即在工程開發過程中不會經常被修改的代碼。 在 Xc ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...