Android实现数据库登入信息存储 (android利用数据库记入登入信息)

随着智能手机的普及,移动应用程序的开发日益受到关注。其中,数据库存储是一项非常基本而重要的任务,这是因为大多数应用程序需要存储用户数据,例如用户的登录信息。本文将介绍如何在Android应用程序中使用数据库来存储用户登录信息。

一、创建Android项目

在Android Studio中创建新项目,选择Empty Activity。然后,我们需要添加SQLiteDatabase类以实现数据库查询和更新。

二、创建数据表

接下来,我们需要定义一个数据表来存储用户登录信息。在这个例子中,我们需要存储用户的用户名和密码。可以将这些信息存储在同一个表中,也可以将它们分别存储在不同的表中。

示例代码如下:

“`java

public class UserDbHelper extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 1;

public static final String DATABASE_NAME = “User.db”;

public static final String TABLE_NAME = “users”;

public static final String COLUMN_NAME_USERNAME = “username”;

public static final String COLUMN_NAME_PASSWORD = “password”;

private static final String SQL_CREATE_ENTRIES =

“CREATE TABLE ” + TABLE_NAME + ” (” +

COLUMN_NAME_USERNAME + ” TEXT,” +

COLUMN_NAME_PASSWORD + ” TEXT)”;

private static final String SQL_DELETE_ENTRIES =

“DROP TABLE IF EXISTS ” + TABLE_NAME;

public UserDbHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

public void onCreate(SQLiteDatabase db) {

db.execSQL(SQL_CREATE_ENTRIES);

}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL(SQL_DELETE_ENTRIES);

onCreate(db);

}

public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {

onUpgrade(db, oldVersion, newVersion);

}

}

“`

以上代码声明了一个名为UserDbHelper的类,这是SQLiteOpenHelper类的子类,用于创建和更新数据库。SQL_CREATE_ENTRIES常量定义了一个用户表,它包含两个字段:username和password。

三、添加数据

现在,我们已经定义了一个数据表,我们需要将用户信息添加到它中。为此,我们创建一个User类,并使用它来创建一个方法,用于将新的用户添加到数据库。在用户被添加到数据库之前,我们需要检查数据库是否已经包含该用户。如果数据库中已经存在具有相同用户名的其他用户,则不能添加该用户。

示例代码如下:

“`java

public class User {

public String username;

public String password;

public User(String username, String password) {

this.username = username;

this.password = password;

}

}

public boolean addUser(String username, String password) {

SQLiteDatabase db = getWritableDatabase();

ContentValues values = new ContentValues();

values.put(UserDbHelper.COLUMN_NAME_USERNAME, username);

values.put(UserDbHelper.COLUMN_NAME_PASSWORD, password);

long newRowId = db.insert(UserDbHelper.TABLE_NAME, null, values);

return newRowId != -1;

}

“`

以上代码定义了一个名为addUser的方法,并通过它将新的用户添加到数据库中。如果添加成功,则返回true,否则返回false。该方法使用ContentValues对象来插入用户名和密码。如果插入操作失败,则返回-1。

四、查询数据

现在,我们已经能够将用户添加到数据库中,我们需要能够从数据库中检索用户信息。为此,我们创建一个getUser方法,该方法接受一个用户名作为参数,并返回与该用户名匹配的用户信息。

示例代码如下:

“`java

public User getUser(String username) {

String[] projection = {

UserDbHelper.COLUMN_NAME_USERNAME,

UserDbHelper.COLUMN_NAME_PASSWORD

};

String selection = UserDbHelper.COLUMN_NAME_USERNAME + ” = ?”;

String[] selectionArgs = { username };

Cursor cursor = db.query(

UserDbHelper.TABLE_NAME,

projection,

selection,

selectionArgs,

null,

null,

null

);

User user = null;

if (cursor.moveToFirst()) {

String password = cursor.getString(cursor.getColumnIndex(UserDbHelper.COLUMN_NAME_PASSWORD));

user = new User(username, password);

}

cursor.close();

return user;

}

“`

以上代码定义了一个getUser方法,它使用一个用户名来查询数据库,并返回与该用户名匹配的用户信息。我们定义了一个projection数组,该数组包含要查询的列名。然后,我们定义了selection字符串,它包含了一个查询条件(即,匹配用户名的条件)。我们将用户名作为参数提供给查询方法。同时,我们定义了一个selectionArgs数组,该数组包含了该条件的值。

接下来,我们调用query方法来执行查询。该方法的参数设置如下:用于查询的表名、projection数组、selection字符串、selectionArgs数组、group by字符串、having字符串和order by字符串。返回的Cursor对象包含查询结果。

如果Cursor对象包含查询结果,则我们通过通过findViewById方法来检索username和password字段。然后,我们创建了一个User对象,并返回它。

五、结论

在本文中,我们展示了如何使用SQLite数据库在Android应用程序中存储用户登录信息。我们定义了一个名为UserDbHelper的类,它继承自SQLiteOpenHelper抽象类,并实现了数据库的创建和更新。我们还创建了一个名为User的类,该类包含用户名和密码,并提供了一个addUser方法,用于将新用户添加到数据库中。我们还创建了一个名为getUser的方法,它接受一个用户名作为参数,并返回匹配该用户名的用户信息。

实际上,本文只是数据库存储的一个简单例子。在实际应用程序中,可能需要存储更多的用户信息。不过,通过本文,我们可以深入了解如何在Android应用程序中使用数据库存储用户信息。这将有助于我们开发更加高效和可靠的应用程序。

相关问题拓展阅读:

android 怎么读取数据库中的数据?

android读取数据库可以使用sqlite一些api进行读取,实例如下:

 陵碧基 /** 

     * 查找一条数据 

     * @param uid 

     */  

    public User find(Integer uid){  

SQLiteDatabase db=dbOpenHelper.getReadableDatabase();  //创建数据库辅助类

Cursor cursor =db.rawQuery(“select * from user where uid=?”, new String{uid.toString()});  //创建一个游标

if(cursor.moveToFirst()){  //循环遍历查找数组

int uid2=cursor.getInt(cursor.getColumnIndex(“uid”));  

String uname=cursor.getString(cursor.getColumnIndex(“uname”));  

String uaddress=cursor.getString(cursor.getColumnIndex(“uaddress”));  

User user=new User();  

user.setUid(uid2);  

user.setUname(uname);  

user.setUaddress(uaddress);  

尺谨return user;  

}  

cursor.close();  

慧则return null;  

    }

Android里面Sqlite的使用

使用步骤

1,创建一个SqliteOpenHelper的子类

public class MySqliteOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1;//数据库版本
 public static final String DATABASE_NAME=”user.db”;//数据库文件 名
 public static final String TABLE_NAME=”user”;//表名

 //字段名
 public static final String ID=”id”; public static final String NAME=”name”; public static final String AGE=”age”; /** * 构造方法
 * @param context :闷孝上下文
 * @param name :数据文件名
 * @param factory :数据库工厂 使用过程中传null * @param version :数据库版本*/ public MySqliteOpenHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION); } /** * 当数据库打开时调用
 * @param db 数据库操作对象
 */ @Override public void onOpen(SQLiteDatabase db) {super.onOpen(db);System.out.println(“onOpen”); } /** * 创建数据库的方法
 * @param db 数据库操作对象升罩迅 CRUDCREATE READ UPDATE DELETE */ @Override public void onCreate(SQLiteDatabase db) {System.out.println(“onCreate”); } /** *当数据库的版本有提升时调用
 * @param db 数据库操作对象
 * @param oldVersion 老吵此版本号
 * @param newVersion 新版本号
 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//更新表//更新数据System.out.println(“onUpgrade”); } /** * 当数据库版本降低时调用 —没什么用
 * @param db * @param oldVersion * @param newVersion */ @Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {super.onDowngrade(db, oldVersion, newVersion);System.out.println(“onUpgrade”); }}

onCreate方法:在之一次调用getReadableDatabase(),getWriteableDatabase()方法里调用【如果磁盘上没有数据库文件就会调用】

onOpen方法:在调用getReadableDatabase(),getWriteableDatabase()调用

onUpgrade()方法,当数据库版本提升时调用

getWritableDatabase()得到可读可写的数据库操作对象。如果内存不足,该方法会锁定数据库,并抛异常

getReadableDatabase()得到可读写的数据库操作对象,,如果内存不足,数据库就只能写了

2,重写onCreate方法

public MySqliteOpenHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION); }

@Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = “CREATE TABLE ” + TABLE_NAME + “( ” + _ID + ” Integer primary key autoincrement,” + NAME + ” TEXT, ” + PASSWORD + ” TEXT)”; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }

3,初始化数据库

//创建数据库

public void mysqlite(View view)

{

//创建 实现工具类

DBHelper dh = new DBHelper(“test.db”,1);

//连接数据库 获取数据库实例

//getWritableDatabase() 数据写满会报错

//getReadableDatabase() 数据写满不会报错

SQLiteDatabase sd = dh.getWritableDatabase();

sd.close();

4,对数据库进行CRUD

参考demo:

public class DBHelper { private final static String DATABASE_NAME = “TestDB2.db”;// 数据库文件名 private final static int VERSION = 1;// 数据库版本 private final static String TABLE_NAME = “users”;// 表名 private final static String _ID = “_id”;// 编号 private final static String NAME = “name”;// 用户名字段 private final static String PASSWORD = “password”;// 用户密码 // 操作数据库的类 private SQLiteDatabase database; MySQLiteOpenHepler hepler; // 写一个内部类去处理数据库的创建和版本的更新 class MySQLiteOpenHepler extends SQLiteOpenHelper { public MySQLiteOpenHepler(Context context) { super(context, DATABASE_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = “CREATE TABLE ” + TABLE_NAME + “( ” + _ID + ” Integer primary key autoincrement,” + NAME + ” TEXT, ” + PASSWORD + ” TEXT)”; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } public DBHelper(Context context) { hepler = new MySQLiteOpenHepler(context); database = hepler.getWritableDatabase(); } // 添加 public void insert(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.insert(TABLE_NAME, null, values); } // 修改 public void update(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.update(TABLE_NAME, values, _ID + “=?”, new String { String.valueOf(user.getId()) }); } // 删除 public void delete(int id) { database.delete(TABLE_NAME, _ID + “=?”, new String { String.valueOf(id) }); }// 查询一个 public User queryById(int id) { User u = null; Cursor cursor = database.query(TABLE_NAME, null, _ID + “=?”, new String { String.valueOf(id) }, null, null, null); if (cursor.getCount() > 0) { cursor.moveToNext(); u = new User(cursor.getInt(0), cursor.getString(1), cursor.getString(2)); } return u; } }

做一个WEBServerse取出数据转换成XML输出,再用android。bundle接受编译

android app如何从数据库中获取需要的数据?

SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。 SQLite 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQLite。

SQLite 和其他数据库更大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。 此外,SQLite 不支持一些标准的 SQL 功能,特别是外纯空键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一个完庆裤燃整的 SQL 系统,拥有完整的触发器,交易等等。

Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。

对于熟悉 SQL 的开发人员来时,在 Android 开发中使用 SQLite 相当简单。但是,由于 JDBC 会消耗太多的系统资源,所以 JDBC 对于手机这种内存受限设备来说并不合适。因此,Android 提供了一些新的 API 来使用 SQLite 数据库,Android 开发中,程序员需要学使用这些 API。

Android 提供了 SQLiteOpenHelper 创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。

SQLiteOpenHelper 的子类,至少需要实现三个方法:

1 构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(誉虚通常是 Null),一个代表你正在使用的数据库模型版本的整数。

2 onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。

3 onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。

Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。穗姿SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:

  构造函数,调用父类 SQLiteOpenHelper 的构造函数

  onCreate()方法;// TODO 创建数据库后,缓李对数据库的操作

  onUpgrage()方法。// TODO 更改数据库版本的操作

  当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。

  操作数据库的更佳实践是创建一个辅助类,例如联系人模块

  class ContactsDatabaseHelper extends SQLiteOpenHelper

3.2 Cursor类

  Android使用Cursor类返回一个需要的值,Cursor作为一个指针从数据库查询返回结果集,使用Cursor允许Android更有效地管理它们需要的行和列,你使用ContentValues对象存储键/值对,它的put()方法允许你插入不同数据类型的键值。

3.3 数据类型

  SQLite 和其他数据库更大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。

四、数据库操作

4.1创建和打开数据库

  在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException。

下面我们来创建一个名为Test的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。

mSQLiteDatabase=this.openOrCreateDatabase(“Test”,MODE_PRIVATE,null);

4.2创建表

  通过execSQL方法来执行一条SQL语句。

String CREATE_TABLE=”create table 表名(列名,列名,……)”;

mSQLiteDatabase.execSQL(CREATE_TABLE);

  创建表的时候总要确定一个主键,这个字段是64位整型,别名_rowid。其特点就是自增长功能。当到达更大值时,会搜索该字段未使用的值(某些记录被删除_rowid会被回收),所以要唯一严格增长的自动主键必须加扰族迟入关键字autoincrement。

4.3删除表

mSQLiteDatabase(“drop table 表名”);

要看数亏滚据库在手机中,销亮余键虚还是在服务器上。

手机中的数据库访问有专门的类SQLiteOpenHelper;

服务器上数据库需要手机和服务器两端编程,需要有json和xml的知识

app产生的数据保存在data/data中。用re文件管理器可以看到

android利用数据库记入登入信息的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android利用数据库记入登入信息,Android实现数据库登入信息存储,android 怎么读取数据库中的数据?,android app如何从数据库中获取需要的数据?的信息别忘了在本站进行查找喔。

来源地址:Android实现数据库登入信息存储 (android利用数据库记入登入信息)

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享