Xamrin开发安卓笔记(三)
http://www.cnblogs.com/minCS/p/4118170.html
Xamrin开发安卓笔记(三)
这次记录的是滚动条跟sqlite创建、存储和读取。
先说滚动条相关,这个是比较简单的知识点。
当有一屏的东西需要填写的时候例如下图
我们都知道如果点击第一个文本框则会出现输入法。但是如果没有滚动条的话,只能依靠输入法中的回车一个一个的向下移动(虽然现在输入法都带自我关闭功能),很不友好,那么就需要滚动条,看了一下布局属性有滚动条,但是使用起来不好使。隐约想起来,安卓有滚动条控件,就在左边找了一下,果真找到这个玩意了。如下图
但是这玩意如何使用呢,又进行了一次搜索,原来这个东西可以套在布局标签的外面,让整个布局带有滚动条(这个滚动条是横向和纵向都带的,可以通过属性关闭)。
套在外面发现划红线了,生成的时候报错。
错误 3 未定义命名空间前缀“android”。
解决办法是把
xmlns:android="http://schemas.android.com/apk/res/android"
挪动到滚动条里面即可。感觉这句话的意思是定义这个标签里面的所有标签都执行安卓这个定义。
这样在出现输入法的时候就可以出现滚动条了。
简单吧,更多属性可以自行研究。
接下来说一下 本地库 sqlite
首先他跟 T-sql语法稍微有一丝不同大部分相似,不同之处以后一点点的说,一次性全写了我也记不住。
在网上和书上看到很多创建数据库的方式,不过没有一个完全正确的,书上的更扯蛋,很多内容已经被整合没了。连引用空间都不一样了(书上的语法貌似是很老的语法),所以这些内容只能作为线索来参考,甚至需要去参考java的安卓开发(布局方面请直接参考java开发方式)。
所以我找到了一个简单明了的创建本地库的方式,也总结了一套自己创建本地库的基本原则。
1,在肯定需要使用的时候创建
2,没必要创建的时候不创建
3,如果整套程序都需要使用本地库,那么在程序运行最初就创建
4,如果有条件手动创建好直接开发使用
创建和使用数据库需要引用
using Android.Database.Sqlite;
有些书上和一些网上资料要引用mono,但是在我这个版本里面已经不存在了(net4.5)。
代码如下

SQLiteDatabase Database = null;//在最外称定义这个 /// <summary>
/// 创建数据库
/// </summary>
private void CreateData()
{
string strDataName = "PhoneBook.db3";
Database = this.OpenOrCreateDatabase(strDataName, FileCreationMode.Private, null);
string strTable = "create table if not exists book(name,sex,age,phone)";
Database.ExecSQL(strTable); }

在最外层定义数据库连接方法,因为一会有使用(因为是demo所以这么些,正式项目肯定要写的比现在的好一些)
定义创建方法定义数据库名称,DB3是数据库扩展名,
OpenOrCreateDatabase 的方法大概意思是如果这个数据库存在则打开否则创建数据库,并且是私有模式创建。
create table if not exists book(name,sex,age,phone)这句话的意思是这个表如果不存在则创建。mssql里面就不能酱紫写。
最后一句话的意思是执行sql。是不是跟ADO.NET很相似!
ok了至此我们做了一个创建一个数据库和表的功能,然后在OnCreate方法调用这个方法就创建了一个数据库。
网上有一些方法是利用IO去找这个库是否存在,说一下 IO的方式创建的数据库路径跟这个方法创建的路径完全不一样(断点调试可以看一下就知道了)
然后开始做按钮的保存事件如下代码
1 btnSeve.Click += delegate
2 {
3 EditText txtName = FindViewById<EditText>(Resource.Id.txtName);
4 EditText txtAge = FindViewById<EditText>(Resource.Id.txtAge);
5 RadioGroup rdogSex = FindViewById<RadioGroup>(Resource.Id.rdogSex);
6 RadioButton rdoSex = FindViewById<RadioButton>(rdogSex.CheckedRadioButtonId);
7 ContentValues cv = new ContentValues();
8 cv.Put("name", txtName.Text);
9 cv.Put("sex", rdoSex.Text);
10 cv.Put("age", txtAge.Text);
11 cv.Put("phone", txtPhone.Text);
12 long a = Database.Insert("book", null, cv);
13 var callDialog = new AlertDialog.Builder(this);
14 callDialog.SetMessage("保存成功");
15 callDialog.SetNeutralButton("确定", delegate
16 {
17 var userDetail = new Intent(this, typeof(UserDetailActivity));
18 //如果不写参数则是无参数跳转
19
20 StartActivity(userDetail);
21 });
22 callDialog.Show();
23 };
ContentValues cv = new ContentValues();
这个类似于ADO.NET中的sqlparameter类似put方法的第一个参数是列明,第二个是值。
long a = Database.Insert("book", null, cv);插入到这个表中(本来想详细写一下,无奈英语太渣,中间参数意思没搞明白)。
这样就执行了一个插入的功能,当然也可以使用ExecSQL方法来用sql执行插入,这里不细说了。
跳转到另一个页面做查询,做查询之前也要打开数据库。用打开或者创建的方式进行打开数据库。
查询代码如下
1 var data = Database.Query("book", new string[] { "name,sex,age,phone" }, "", null, "", "", "");
2 while (data.MoveToNext())
3 {
4 lblDetail.Text += data.GetString(0)
5 + data.GetString(1)
6 + data.GetString(2)
7 + data.GetString(3) + "|";
8 }
9 data.Close();
10 Database.Close();
这个查询代码就有一些类似于java的查询方式,查询哪个表,那些字段,后面的条件为空了,这些条件有排序 where 等(要查询的表名,要获取的字段名,WHERE 条件,包含可选的位置参数,去替代 WHERE 条件中位置参数的值,GROUP BY 条件,HAVING 条件。)。
循环内部的GetString(Index)是列的位置,位置是从0开始。
基本就到这了,下次差不多是gridview方面相关内容了。
最后禁止转载。话说谁能告诉我怎么加内个禁止转载的样式??
来源于http://www.cnblogs.com/minCS/p/4118170.html
作者:小胖李
出处:http://www.cnblogs.com/minCS/
本文版权归作者和博客园共有,禁止转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Xamrin开发安卓笔记(三)的更多相关文章
- Xamrin开发安卓笔记(二)
http://www.cnblogs.com/minCS/p/4112617.html Xamrin开发安卓笔记(二) 安装篇 Xamrin开发安卓笔记(一) 昨天调理一天AAPT.EXE 被推出 ...
- Xamrin开发安卓笔记(一)
http://www.cnblogs.com/minCS/p/4108133.html Xamrin开发安卓笔记(一) 安装篇 环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有 ...
- 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现
本系列文章由七十一雾央编写,转载请注明出处. 313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5 ...
- python-django开发学习笔记三
1.简述 1.1 开发环境 该笔记所基于的开发环境为:windows8.python2.7.5.psycopg2-2.4.2.django1.5.4.pyCharm-2.7.3.以上所描述的软件.插件 ...
- C++服务器开发之笔记三
为什么需要原子性操作? 我们考虑一个例子:(1)x++这个常见的运算符在内存中是怎样操作的?从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址 若是有两个线程同时对同一个变量++, ...
- Photon + Unity3D 线上游戏开发 学习笔记(三)
好的,说了两篇了 如今我们正式的入手,揭开photon 的盖头哈 建立photon项目 第一步: 在Visual studio建立一个空的 待会为了測试也会在里面建立一个client 项目 (只 ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Django开发笔记三
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...
- Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
随机推荐
- C++ 4种强制类型转换
C++的四种强制类型转换为:static_cast.const_cast.reinterpret_cast和dynamic_cast 类型转换的一般形式:cast-name(expression); ...
- Zookeeper的结构和命令
1. Zookeeper的特性 1.Zookeeper:一个leader,多个follower组成的集群. 2.全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个serv ...
- Using Fast Weights to Attend to the Recent Past
Ba, Jimmy, et al. "Using Fast Weights to Attend to the Recent Past." Advances In Neural In ...
- 请谈谈对SOA的认识。
请谈谈对SOA的认识. 解答:面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接 ...
- 【BZOJ】3301: [USACO2011 Feb] Cow Line(康托展开)
http://www.lydsy.com/JudgeOnline/problem.php?id=3301 其实这一题很早就a过了,但是那时候看题解写完也是似懂非懂的.... 听zyf神犇说是康托展开, ...
- FireBug与FirePHP
a.FireBug,平时用的比较多.就是在客户端调试代码.如:hTML ,CSS,JS等 b.FireBug安装较容易. b-1,打开火狐浏览器 b-2,打开“附加组件” b-3.搜索“firebug ...
- Android 调用堆栈跟踪
Android开发中,我们也会经常遇到段错误,也就是SIGSEGV(11),这个时候libc的backtrace会打印出对应的堆栈信 息,而你看到的仅仅是一对数字,好像无从查起. 如下面这一从串断错误 ...
- sql优化(2)
转自:https://www.cnblogs.com/Jacck/p/8030455.html 看到一篇非常全面的SQL优化文章,在开发的工作中往往不考虑性能上的缺失(在一开始的时候数据量不大也看不出 ...
- Kubernetes之kubectl常用命令
最近项目有用到Kubernetes作集群配置,所以学习下相关命令,记录下以备下次使用... kubectl help 显示具体的用法 kubectl controls the Kubernetes c ...
- CSS 伪元素 使用参考
伪元素可以做得事情是非常多的,详情大家可以参考这里 大放异彩的伪元素——可以做什么? 本篇主要讲两个伪元素:before和:after的几个要点: 1.:before和:after是加在元素的里面,也 ...