分享 Xamarin.android 关于使用SQLiteOpenHelper的小白经验
程序员文章站
2022-05-17 16:58:13
关于使用SQLiteOpenHelper的使用,对于小白的我,百度啦相当多的大神的介绍,均未能让我这新手(零基础)成功学会,参考了http://www.cnblogs.com/yaozhenfa/p/xamarin_android_sqliteopenhelper.html,我成功实验出我的第一个登 ......
关于使用sqliteopenhelper的使用,对于小白的我,百度啦相当多的大神的介绍,均未能让我这新手(零基础)成功学会,
参考了http://www.cnblogs.com/yaozhenfa/p/xamarin_android_sqliteopenhelper.html,
我成功实验出我的第一个登录注册程序
为使像我这样的小白能顺利开发,特分享我的经验;大神请指点不足,谢谢!
直接贴代码及步骤吧,原理我就不懂啦,
---------------------
作者:weixin_42671268
来源:csdn
原文:https://blog.csdn.net/weixin_42671268/article/details/87871246
版权声明:本文为博主原创文章,转载请附上博文链接!
1 //创建数据库链接,需要创建一个包喊数据库sqliteopenhelper的类文件:localsqliteopenhelper.cs;
using system.text;
using android.database;
using android.app;
using android.content;
using android.os;
using android.runtime;
using android.views;
using android.widget;
using android.database.sqlite;
namespace systemapp3
{
class localsqliteopenhelper : sqliteopenhelper//使用sqliteopenhelper,因为这个类会简化我们创建数据的步骤
{
public localsqliteopenhelper(context context): base(context, “littonb”, null, 1)//创建一个名为lib的数据库
{
}
public override void oncreate(sqlitedatabase db)//oncreate方法仅会在数据库不存在的情况下才执行
{
db.execsql("create table userinfo(id integer primary key ,username text not null,password text not null)");//生成一张userinfo的表,(有3列:id,uname,upwd) (integer primary key为主键的意思,)(not null不为空)
}
public override void onupgrade(sqlitedatabase db, int oldversion, int newversion)//onupgrade方法使数据库版本需要更新时进行操作
{
db.execsql("drop table if exists userinfo");//检查是否有userinfo的表,有就删除,始终更新此表;
oncreate(db);
}
}
}
然后去操作数据库
即在activity.cs文件中操作,
2 //登录按钮事件
loginbtn.click += (sender, e) =>
{ //登录按钮事件
string username1 = username.text;
string password1 = password.text;
localsqliteopenhelper sqlhelper = new localsqliteopenhelper(this);
//通过此段得到sqlhelper助手对象
sqlitedatabase db1 = sqlhelper.writabledatabase;
// 得到数据对象db1,sqlhelper.writabledatabase为开启插入,修改,删除,查询功能,sqlhelper.readabledatabase只读取,如查询,
//查询userinfo表里的条件是username and password都相同,的一条数据:
icursor ic = db1.query("userinfo", new string[] { "username", "password" }, " username= ? ",new string[] {username1 }, null, null, null);
//db.query("userinfo", new string[] { "username", "password" }, "username=?", new string[] { username1, password1 }, null, null, null);
//query查询方法,将username1, password1传入到dp1.;然后用游标icursor 方法查到并保存到cursor的结果集里ic.,
// 第一个参数string:表名 // 第二个参数string[]:要查询的列名// 第三个参数string:查询条件 // 第四个参数string[]:查询条件的参数
// 第五个参数string:对查询的结果进行分组// 第六个参数string:对分组的结果进行限制// 第七个参数string:对查询的结果进行排序
if (ic.movetofirst())//检查ic.结果集里有没有数据,如有执行if的下一步操作;
{
ic.movetofirst();
string uname1 = ic.getstring(ic.getcolumnindex("username"));
string upwd1 = ic.getstring(ic.getcolumnindex("password"));
intent main = new intent(this, typeof(mainactivity)); //实例化意图 main,打开mainactivity.cs
main.putextra("userid", username.text);//将userid取username的值,传送数值到mainactivity.cs上,
startactivity(main);
toast.maketext(this, uname1 + " 欢迎登陆!", toastlength.long).show();
}
else
{
toast.maketext(this, "用户: " + username.text + " 或密码无效!", toastlength.long).show();
}
3 //注册按钮事件
registernewbtn.click += (sender, e) =>
{ //注册按钮事件
//创建数据库链接,需要创建一个包喊数据库sqliteopenhelper的类文件:localsqliteopenhelper.cs;
localsqliteopenhelper dbhelper = new localsqliteopenhelper(this);
// 得到数据对象db1,sqlhelper.writabledatabase为开启插入,修改,删除,查询功能,sqlhelper.readabledatabase只读取,如查询,
sqlitedatabase db = dbhelper.writabledatabase;
//以下为开启插入指令,
//contentvalues类型,通过它我们可以大大的简化自己拼接插入语句的繁琐,比如下面我们可以设置uname字段的值为usernewid.text,upwd的值为newpswd1.text;
contentvalues cv = new contentvalues();
cv.put(“username”, usernewid.text);
cv.put("password ", newpswd1.text);
//关键就是put方法,它拥有以下的重载方法。
//public void put(string key, bool value); //public void put(string key, byte[] value);
//public void put(string key, double value); // public void put(string key, float value);
// public void put(string key, int value); // public void put(string key, long value);
// public void put(string key, sbyte value); // public void put(string key, short value);
// public void put(string key, string value);
// 通过以上这些重载方法我们就可以插入不同类型的参数
// 获取不同字段的值如下public object get(string key);
//public bool getasboolean(string key); // public sbyte getasbyte(string key);
// public byte[] getasbytearray(string key); // public double getasdouble(string key);
// public float getasfloat(string key); // public int getasinteger(string key);
// public long getaslong(string key); // public short getasshort(string key);
// public string getasstring(string key);。
//将以上值设置到表中的列里后,我们将执行以下查询功能,是否用户名重复,
icursor ic = db.query(“userinfo”, new string[] { “id”, “username”, “password” }, " username = ? ", new string[] { usernewid.text }, null, null, null);
if (ic.movetofirst())
{
string uname1 = ic.getstring(ic.getcolumnindex("username"));
string upwd1 = ic.getstring(ic.getcolumnindex("password"));
if (uname1 == usernewid.text)
{
toast.maketext(this, uname1 + " 用户名重复!", toastlength.long).show();
}
else
{
toast.maketext(this, uname1 + "注册失败 !", toastlength.long).show();
}
}
else
{
long id = db.insert("userinfo", null, cv);//值设置到表中的列里后,它来添加一条数据到userinfo表中;
toast.maketext(this, usernewid.text + "注册成功 !", toastlength.long).show();
}
};
原创分享请注明出处!
上一篇: 2K游戏会爆掉6GB显存吗?RTX 2060实战37款游戏
下一篇: 卧室里进了只老鼠