【997755.com澳门葡京】记开采个人图书收藏清单小程序支付,函数操作方法

明晚做到了Web端新添图书音讯的效果,今后就差DB的具体贯彻了。

前方的书屋开头化的前端新闻已经完美,所以今后开班完成DB的Script部分。

DB::table($tablename)获取科学带前缀的表名,转变数据库句柄,

  //此种类博文是《第大器晚成行Android代码》的读书笔记,如有错漏,应接指正!

因为自个儿把Book相关的新闻拆分的超级多,所以更新有一些小麻烦。

新增Action:Shelf_Init.sql

DB::delete($tablename, 条件,条数约束)删除表中的数目

  我们后续在Database项指标根基上世袭支付,通过内容提供器来给它加入外界访问接口。首先将
MyDatabaseHelper 中央银行使
Toast弹出创造数据库成功的提示去除掉,因为跨程序访谈时大家不能够一直利用
Toast。

第生机勃勃,小编索要创制叁个Book Type的马特er;

997755.com澳门葡京 1

DB::insert($tablename,
数据(数组),是或不是再次来到插入ID,是不是是替换式,是不是silent)插入数据操作

 

下一场,将图片路线保存到FileBank中,并赶回FileBankID;

svc.sql

DB::update($tablename, 数据(数组)条件)更新操作

风流洒脱、增加三个DatabaseProvider 类:

连绵起伏,插入Publisher消息(须要看清name不设有才会insert卡塔 尔(英语:State of Qatar),然后再次来到PublisherID;

1 CREATE SCHEMA [svc]
2     AUTHORIZATION [dbo];

DB::fetch(查询后的能源)从结果聚集取关乎数组,注意假设结果中的多少个或上述的列具备相仿字段名,最终一列将先行。

997755.com澳门葡京 2997755.com澳门葡京 3

 1 CREATE PROCEDURE [base].[Publisher#Insert](@json nvarchar(max), @id int out)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         declare    @name nvarchar(100);
 8         select    @name=Publisher from openjson(@json, '$') with (Publisher nvarchar(100))
 9 
10         -- insert Publisher
11         insert    base._Publisher(Name)select @name
12         where    not exists(select 1 from base._Publisher p where p.Name=@name);
13 
14         select    @id=ID from base.Publisher#Raw() where Name=@name;
15 ...
16 END

Shelf_Init.sql

DB::fetch_first($sql)取查询的率先条数据fetch

  1 public class DatabaseProvider extends ContentProvider {
  2     public static final int BOOK_DIR = 0;
  3     public static final int BOOK_ITEM = 1;
  4     public static final int CATEGORY_DIR = 2;
  5     public static final int CATEGORY_ITEM = 3;
  6     public static final String AUTHORITY = "com.mycompany.database.provider";
  7     private static UriMatcher uriMatcher;
  8     private MyDatabaseHelper dbHelper;
  9     static {
 10         uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
 11         uriMatcher.addURI(AUTHORITY, "book", BOOK_DIR);
 12         uriMatcher.addURI(AUTHORITY, "book/#", BOOK_ITEM);
 13         uriMatcher.addURI(AUTHORITY, "category", CATEGORY_DIR);
 14         uriMatcher.addURI(AUTHORITY, "category/#", CATEGORY_ITEM);
 15     }
 16     @Override
 17     public boolean onCreate() {
 18         dbHelper = new MyDatabaseHelper(getContext(), "BookStore.db", null, 2);
 19         return true;
 20     }
 21     @Override
 22     public Cursor query(Uri uri, String[] projection, String selection,
 23                         String[] selectionArgs, String sortOrder) {
 24     // 查询数据
 25         SQLiteDatabase db = dbHelper.getReadableDatabase();
 26         Cursor cursor = null;
 27         switch (uriMatcher.match(uri)) {
 28             case BOOK_DIR:
 29                 cursor = db.query("Book", projection, selection, selectionArgs,
 30                         null, null, sortOrder);
 31                 break;
 32             case BOOK_ITEM:
 33                 String bookId = uri.getPathSegments().get(1);
 34                 cursor = db.query("Book", projection, "id = ?", new String[]
 35                         { bookId }, null, null, sortOrder);
 36                 break;
 37             case CATEGORY_DIR:
 38                 cursor = db.query("Category", projection, selection,
 39                         selectionArgs, null, null, sortOrder);
 40                 break;
 41             case CATEGORY_ITEM:
 42                 String categoryId = uri.getPathSegments().get(1);
 43                 cursor = db.query("Category", projection, "id = ?", new String[]
 44                         { categoryId }, null, null, sortOrder);
 45                 break;
 46             default:
 47                 break;
 48         }
 49         return cursor;
 50     }
 51     @Override
 52     public Uri insert(Uri uri, ContentValues values) {
 53     // 添加数据
 54         SQLiteDatabase db = dbHelper.getWritableDatabase();
 55         Uri uriReturn = null;
 56         switch (uriMatcher.match(uri)) {
 57             case BOOK_DIR:
 58             case BOOK_ITEM:
 59                 long newBookId = db.insert("Book", null, values);
 60                 uriReturn = Uri.parse("content://" + AUTHORITY + "/book/" + newBookId);
 61                 break;
 62             case CATEGORY_DIR:
 63             case CATEGORY_ITEM:
 64                 long newCategoryId = db.insert("Category", null, values);
 65                 uriReturn = Uri.parse("content://" + AUTHORITY + "/category/" +
 66                         newCategoryId);
 67                 break;
 68             default:
 69                 break;
 70         }
 71         return uriReturn;
 72     }
 73     @Override
 74     public int update(Uri uri, ContentValues values, String selection,
 75                       String[] selectionArgs) {
 76     // 更新数据
 77         SQLiteDatabase db = dbHelper.getWritableDatabase();
 78         int updatedRows = 0;
 79         switch (uriMatcher.match(uri)) {
 80             case BOOK_DIR:
 81                 updatedRows = db.update("Book", values, selection, selectionArgs);
 82                 break;
 83             case BOOK_ITEM:
 84                 String bookId = uri.getPathSegments().get(1);
 85                 updatedRows = db.update("Book", values, "id = ?", new String[]
 86                         { bookId });
 87                 break;
 88             case CATEGORY_DIR:
 89                 updatedRows = db.update("Category", values, selection,
 90                         selectionArgs);
 91                 break;
 92             case CATEGORY_ITEM:
 93                 String categoryId = uri.getPathSegments().get(1);
 94                 updatedRows = db.update("Category", values, "id = ?", new String[]
 95                         { categoryId });
 96                 break;
 97             default:
 98                 break;
 99         }
100         return updatedRows;
101     }
102     @Override
103     public int delete(Uri uri, String selection, String[] selectionArgs) {
104     // 删除数据
105         SQLiteDatabase db = dbHelper.getWritableDatabase();
106         int deletedRows = 0;
107         switch (uriMatcher.match(uri)) {
108             case BOOK_DIR:
109                 deletedRows = db.delete("Book", selection, selectionArgs);
110                 break;
111             case BOOK_ITEM:
112                 String bookId = uri.getPathSegments().get(1);
113                 deletedRows = db.delete("Book", "id = ?", new String[] { bookId });
114                 break;
115             case CATEGORY_DIR:
116                 deletedRows = db.delete("Category", selection, selectionArgs);
117                 break;
118             case CATEGORY_ITEM:
119                 String categoryId = uri.getPathSegments().get(1);
120                 deletedRows = db.delete("Category", "id = ?", new String[]
121                         { categoryId });
122                 break;
123             default:
124                 break;
125         }
126         return deletedRows;
127     }
128     @Override
129     public String getType(Uri uri) {
130         switch (uriMatcher.match(uri)) {
131             case BOOK_DIR:
132                 return "vnd.android.cursor.dir/vnd.com.mycompany.database.provider.book";
133             case BOOK_ITEM:
134                 return "vnd.android.cursor.item/vnd.com.mycompany.database.provider.book";
135             case CATEGORY_DIR:
136                 return "vnd.android.cursor.dir/vnd.com.mycompany.database.provider.category";
137             case CATEGORY_ITEM:
138                 return "vnd.android.cursor.item/vnd.com.mycompany.database.provider.category";
139         }
140         return null;
141     }
142 }

 

 1 CREATE PROCEDURE [svc].[Shelf$Init](@json nvarchar(max))
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5     SET    NOCOUNT    ON;
 6     SET XACT_ABORT ON;
 7     BEGIN TRY
 8         BEGIN    TRAN;
 9 
10         declare    @nickName nvarchar(20), @shelfName nvarchar(20);
11         select    @nickName=NickName,     @shelfName=ShelfName
12         from    openjson (@json, '$')
13         with (
14             NickName        nvarchar(20),
15             ShelfName        nvarchar(20)
16         );
17 
18         insert    core._Party(Type, Alias) select k._User, @nickName
19         from    core.Party#Type() k;
20         declare    @userID int=@@identity;
21 
22         
23         insert    core._Party(PID, Type, Alias) select @userID, k._Shelf, @shelfName
24         from    core.Party#Type() k;
25 
26         COMMIT    TRAN;
27     END TRY
28     BEGIN CATCH
29         if (xact_state() = -1) ROLLBACK TRAN; throw;
30     END CATCH
31 END

DB::fetch_all($sql)查询并fetch

View Code

三番四回,插入Binding消息(也亟需看清name不设有才insert卡塔尔国,再次回到BindingID;

好了,小编去试试前端能或无法开始化音讯进DB

DB::result_first($sql)查询结果集的第二个字段值

   代码中大家任重(Ren Zhong卡塔 尔(英语:State of Qatar)而道远重写了CRUD操作:

 1 CREATE PROCEDURE [base].[Binding#Insert](@json nvarchar(max), @id int out)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         declare    @name nvarchar(100);
 8         select    @name=Binding from openjson(@json, '$') with (Binding nvarchar(100))
 9 
10         -- insert Binding
11         insert    base._Binding(Name)select @name
12         where    not exists(select 1 from base._Binding p where p.Name=@name);
13 
14         select    @id=ID from base.Binding#Raw() where Name=@name;
15 
16 ...
17 END

….

DB::query($sql)普通查询

  1卡塔 尔(阿拉伯语:قطر‎query()方法:在这里个方法中先取获得了
SQLiteDatabase 的实例,然后依照传入的
Uri参数剖断出客商想要访谈哪张表,再调用 SQLiteDatabase 的
query()举办询问,并将 Cursor
对象回来就好了。注意当访问单条数据的时候有一个细节,这里调用了 Uri
对象的getPathSegments()方法,它会将内容
UGL450I权限之后的大器晚成对以“/”符号实行私分,并把分割后的结果归入到一个字符串列表中,那那些列表的第
0 个职位贮存的正是路线,第 1个地方置放的正是 id 了。获得了 id
之后,再通过 selection 和 selectionArgs
参数进行封锁,就落到实处了询问单条数据的效果与利益。

 

在测量试验早前,我们需求得以达成一下Init Razor Pages代码:

DB::num_rows(查询后的财富)得到记录集总条数

  2卡塔 尔(阿拉伯语:قطر‎insert()方法:
相仿先拿走到了 SQLiteDatabase 的实例, 然后基于传入的
Uri参数判定出客户想要往哪张表里添扩张少, 再调用 SQLiteDatabase 的
insert()方法开展加多。 注意
insert()方法需要再次来到一个可以见到代表那条新扩大数据的 UCRUISERI, 所以大家还必要调用
Uri.parse()方法来将贰个剧情 UXC60I深入深入分析成 Uri对象,当然这几个剧情UPAJEROI是以新增增加少的 id 结尾的。

继续,插入Book信息;

Init.cshtml.cs

DB::_execute(命令,参数)推行mysql类的下令

  3卡塔 尔(阿拉伯语:قطر‎update()方法:先拿走SQLiteDatabase
的实例,然后依照传入的 Uri 参数推断出客商想要更新哪张表里的数据,再调用
SQLiteDatabase的
update()方法实行立异,最终将受影响的行数作为再次来到值重回。

继续,插入BookInfo的信息;

 1     using M = Shelf;
 2     public class InitModel : PageModel
 3     {
 4         private readonly IShelfRepo _shelfRepo;
 5         public InitModel(IShelfRepo shelfRepo)
 6         {
 7             _shelfRepo = shelfRepo;
 8         }
 9         [BindProperty]
10         public InitInputModel Input { get; set; }
11 
12         public void OnGet()
13         {
14 
15         }
16 
17         public async Task<IActionResult> OnPostAsync()
18         {
19             if (ModelState.IsValid)
20             {
21                 await _shelfRepo.InitAsync(new M.InitSpec
22                 {
23                     NickName = Input.NickName.Trim(),
24                     ShelfName = Input.ShelfName.Trim()
25                 });
26                 return RedirectToPage("New");
27             }
28             return Page();
29         }
30     }

【997755.com澳门葡京】记开采个人图书收藏清单小程序支付,函数操作方法。DB::limit(n,n)重返约束字串

  4卡塔尔delete()方法:仍是先拿走到
SQLiteDatabase 的实例,然后依照传入的 Uri
参数判定出客商想要删除哪张表里的多少,再调用 SQLiteDatabase 的
delete()方法实行删除就好了,被去除的行数将用作重返值重返。

继续,插入BookNbr信息;

页面内容也须求校勘一下form部分

DB::田野同志(字段名, $pid) 重回条件,假若为数组则赶回 in 条件

 

继续,插入BookSupplement信息;

Init.cshtml

DB::order(别名, 方法)排序

二、在AndroidManifest.xml文件中开展注册:

继续,插入BookTag信息;

 1 <form method="post">
 2     <div class="form-group form-group-lg">
 3         <label asp-for="Input.NickName"></label>
 4         <input class="form-control form-control-lg" asp-for="Input.NickName" autocomplete="off">
 5         
 6     </div>
 7     <div class="form-group form-group-lg">
 8         <label asp-for="Input.ShelfName"></label>
 9         <input class="form-control form-control-lg" asp-for="Input.ShelfName" autocomplete="off">
10         
11     </div>
12     <div class="form-group text-right">
13         <button class="btn btn-warning btn-lg" type="submit">Save</button>
14     </div>
15 </form>

注意事项:全部数据在插入数据库以前,均须要张开addslashes()管理,避防特殊字符未经转义在插入数据库的时候现身谬误。Discuz!中具有通过
GET, POST,
FILE,得到的变量暗中认可意况下已经接受了addslashes()举行了转义,不必再次进行。要是数量管理必要(举例用于直接展现),能够运用
stripslashes()
恢复,但数量在插入数据库以前必得再度举行转义。缓存文件中,日常对缓存数据的值选择addcslashes($string, ”\’)进行转义。

997755.com澳门葡京 4997755.com澳门葡京 5

 1 CREATE PROCEDURE [base].[BookTag#Insert](@json nvarchar(max), @bookID bigint)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         -- insert Tag
 8         insert    base._Tag(Name)select value
 9         from    openjson(@json, '$.Tags') x
10         where    not exists(select 1 from base._Tag p where p.Name=x.value);
11 
12         insert    base._BookTag(BookID, TagID) select @bookID, x.ID
13         from    openjson(@json, '$.Tags') j join base.Tag#Raw() x on x.Name=j.value
14 
15 ...
16 END

填写不动书房的音讯:

最数以万计的查询数据库举例:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.mycompany.database" >
 4 
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:supportsRtl="true"
10         android:theme="@style/AppTheme" >
11         <activity android:name=".MainActivity" >
12             <intent-filter>
13                 <action android:name="android.intent.action.MAIN" />
14 
15                 <category android:name="android.intent.category.LAUNCHER" />
16             </intent-filter>
17         </activity>
18         <provider
19             android:name="com.mycompany.database.DatabaseProvider"
20             android:authorities="com.mycompany.database.provider" >
21         </provider>
22     </application>
23 
24 </manifest>

 

997755.com澳门葡京 6

收获单条数据:

View Code

继续,插入BookAuthor信息;

 

$rs = DB::fetch_first(“SELECT * FROM “.DB::table(‘common_member’).”
WHERE uid=1″);

   这里大家应用了<provider>标签来对
DatabaseProvider 这一个内容提供器实行挂号,在 android:name
属性中钦点了此类的姓名,又在 android:authorities
属性中钦定了该内容提供器的权杖。今后Database那一个项目就已经具备了跨程序分享数据的法力了。接着我们须要将
Database
程序从手机中去除掉,避防御上次中发生的遗留数据对大家产生苦闷。然后运营一下品类,将Database程序重新安装在手提式有线电话机了。接着关闭掉Databaset
那一个项目,并成立三个新品类
ProviderTest,大家就将通过那一个顺序去拜见Database中的数据。

 1 CREATE PROCEDURE [base].[BookAuthor#Insert](@json nvarchar(max), @bookID bigint)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         -- insert Author
 8         insert    base._Author(Name)select value
 9         from    openjson(@json, '$.Authors') x
10         where    not exists(select 1 from base._Author p where p.Name=x.value);
11 
12         insert    base._BookAuthor(BookID, AuthorID) select @bookID, x.ID
13         from    openjson(@json, '$.Authors') j join base.Author#Raw() x on x.Name=j.value
14 
15 ...
16 END

 点击Save按键提交,OK,平时提交了并跳转了。

此地收获的是UID为1的顾客的多少,不过discuz内还应该有叁个getuserbyuid可以获得客商数量

 

 

翻看下DB有未有数量:

收获多条数据:

三、编写ProviderTest的布局文件:

继续,插入BookTranslator信息;

997755.com澳门葡京 7

$rs = DB::fetch_all(“SELECT * FROM ” .DB::table(‘common_member’).”
WHERE uid in(1,2,3,4,5,6)”);

997755.com澳门葡京 8997755.com澳门葡京 9

 1 CREATE PROCEDURE [base].[BookTranslator#Insert](@json nvarchar(max), @bookID bigint)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         -- insert Translator
 8         insert    base._Author(Name)select value
 9         from    openjson(@json, '$.Translators') x
10         where    not exists(select 1 from base._Author p where p.Name=x.value);
11 
12         insert    base._BookTranslator(BookID, TranslatorID) select @bookID, x.ID
13         from    openjson(@json, '$.Translators') j join base.Author#Raw() x on x.Name=j.value
14 
15 ...
16 END

嘿嘿,看来一切符合规律。

那边拿到的是UID为1 2 3 4 5 6的客商的新闻

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
 3     android:orientation="vertical"
 4     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
 5     android:paddingRight="@dimen/activity_horizontal_margin"
 6     android:paddingTop="@dimen/activity_vertical_margin"
 7     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
 8 
 9     <Button
10         android:id="@+id/add_data"
11         android:layout_width="match_parent"
12         android:layout_height="wrap_content"
13         android:text="Add To Book" />
14     <Button
15         android:id="@+id/query_data"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:text="Query From Book" />
19     <Button
20         android:id="@+id/update_data"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:text="Update Book" />
24     <Button
25         android:id="@+id/delete_data"
26         android:layout_width="match_parent"
27         android:layout_height="wrap_content"
28         android:text="Delete From Book" />
29 </LinearLayout>

 

 

插入数据疏解

View Code

最后,关联新扩展的Book音讯和Shelf,插入ShelfBook新闻。

调用情势:DB::insert()

   布局文件比较轻便,里面放置了八个按键,分别用于增添、查询、校订和删除数据的。

 

表明:关于是不是是还是不是。只要值为1正是 是,否就直接无视也许留空

997755.com澳门葡京 , 

未来假释Init Script

举例:

四、修改ProviderTest主代码:

Book_Init.sql

先是是存在多少个表名称为pre_test

997755.com澳门葡京 10997755.com澳门葡京 11

 1 CREATE PROCEDURE [svc].[Book$Init](@json nvarchar(max))
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         declare    @stringID varchar(36), @userID int,  @shelfID int;
 8         select    @stringID=u.StringID,  @userID=u.ID, @shelfID=s.ID
 9         from    openjson (@json, '$') with (StringID varchar(36))
10         cross    apply core.User#For(StringID) u
11         join    core.Party#Raw() s on s.PID=u.ID;
12 
13         declare    @stateID int=(select BookCreated from core.Status#ID());
14 
15         -- init Matter
16         insert    core._Matter(Type, UserID, StateID)
17         select    k._Book, @userID, @stateID from core.Matter#Type() k;
18         declare    @matterID int=@@identity;
19 
20         -- init FileBank
21         insert    base._FileBank(Type, Url)
22         select    k._BookImage, ImageUrl
23         from    openjson(@json, '$') with (ImageUrl varchar(200))
24         cross    apply base.FileBank#Type() k;
25         declare    @imageID int=@@identity;
26         
27         -- insert Publisher
28         declare    @publisherID int;
29         exec    base.Publisher#Insert @json=@json, @id=@publisherID out;
30         
31         -- insert Binding
32         declare    @bindingID int;
33         exec    base.Binding#Insert @json=@json, @id=@bindingID out;
34 
35         -- insert Book
36         insert    base._Book(ID, Title, PublisherID, BindingID, ImageID)
37         select    @matterID, Title, @publisherID, @bindingID, @imageID
38         from    openjson(@json, '$') with (Title nvarchar(100));
39         
40         -- insert BookInfo
41         insert    base._BookInfo(ID, OriginTitle, PageCnt, Pubdate, SubTitle)
42         select    @matterID, OriginTitle, Pages, Pubdate, SubTitle
43         from    openjson(@json, '$')
44         with (
45             Pages       int, 
46             Pubdate     char(10), 
47             SubTitle    nvarchar(150), 
48             OriginTitle nvarchar(150)
49         );
50         
51         -- insert BookNbr
52         insert    base._BookNbr(ID, Type, Number)
53         select    @matterID, k._ISBN13, Isbn13
54         from    base.BookNbr#Type() k, openjson(@json, '$') with (Isbn13 char(13));
55         
56         insert    base._BookNbr(ID, Type, Number)
57         select    @matterID, k._ISBN10, Isbn10
58         from    base.BookNbr#Type() k, openjson(@json, '$') with (Isbn10 char(10));
59         
60         -- insert BookSupplement
61         insert    base._BookSupplement(ID, Type, Supplement)
62         select    @matterID, k._AuthorIntro, AuthorIntro
63         from    base.BookSupplement#Type() k, openjson(@json, '$') with (AuthorIntro nvarchar(max));
64         
65         insert    base._BookSupplement(ID, Type, Supplement)
66         select    @matterID, k._Summary, Summary
67         from    base.BookSupplement#Type() k, openjson(@json, '$') with (Summary nvarchar(max));
68         
69         insert    base._BookSupplement(ID, Type, Supplement)
70         select    @matterID, k._Catalog, Catalog
71         from    base.BookSupplement#Type() k, openjson(@json, '$') with (Catalog nvarchar(max));
72 
73         -- insert BookTag
74         exec    base.BookTag#Insert @json=@json, @bookID=@matterID;
75         
76         -- insert BookAuthor
77         exec    base.BookAuthor#Insert @json=@json, @bookID=@matterID;
78 
79         -- insert BookTranslator
80         exec    base.BookTranslator#Insert @json=@json, @bookID=@matterID;
81         
82         -- insert ShelfBook
83         insert    base._ShelfBook(BookID, ShelfID) values(@matterID, @shelfID);
84 
85 ...
86 END

表内有以下字段:id(依次增加卡塔尔国 name uid 字段类型就别管了

 1 public class MainActivity extends AppCompatActivity {
 2 
 3     private String newId;
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         super.onCreate(savedInstanceState);
 7         setContentView(R.layout.activity_main);
 8         Button addData = (Button) findViewById(R.id.add_data);
 9         addData.setOnClickListener(new View.OnClickListener() {
10             @Override
11             public void onClick(View v) {
12             // 添加数据
13                 Uri uri = Uri.parse("content://com.mycompany.database.provider/book");
14                 ContentValues values = new ContentValues();
15                 values.put("name", "A Clash of Kings");
16                 values.put("author", "George Martin");
17                 values.put("pages", 1040);
18                 values.put("price", 22.85);
19                 Uri newUri = getContentResolver().insert(uri, values);
20                 newId = newUri.getPathSegments().get(1);
21             }
22         });
23         Button queryData = (Button) findViewById(R.id.query_data);
24         queryData.setOnClickListener(new View.OnClickListener() {
25             @Override
26             public void onClick(View v) {
27                 // 查询数据
28                 Uri uri = Uri.parse("content://com.mycompany.database.provider/book");
29                         Cursor cursor = getContentResolver().query(uri, null, null, null, null);
30                 if (cursor != null) {
31                     while (cursor.moveToNext()) {
32                         String name = cursor.getString(cursor.
33                                 getColumnIndex("name"));
34                         String author = cursor.getString(cursor.
35                                 getColumnIndex("author"));
36                         int pages = cursor.getInt(cursor.getColumnIndex
37                                 ("pages"));
38                         double price = cursor.getDouble(cursor.
39                                 getColumnIndex("price"));
40                         Log.d("MainActivity", "book name is " + name);
41                         Log.d("MainActivity", "book author is " + author);
42                         Log.d("MainActivity", "book pages is " + pages);
43                         Log.d("MainActivity", "book price is " + price);
44                     }
45                     cursor.close();
46                 }
47             }
48         });
49         Button updateData = (Button) findViewById(R.id.update_data);
50         updateData.setOnClickListener(new View.OnClickListener() {
51             @Override
52             public void onClick(View v) {
53             // 更新数据
54                 Uri uri = Uri.parse("content://com.mycompany.database.provider/book/" + newId);
55                         ContentValues values = new ContentValues();
56                 values.put("name", "A Storm of Swords");
57                 values.put("pages", 1216);
58                 values.put("price", 24.05);
59                 getContentResolver().update(uri, values, null, null);
60             }
61         });
62         Button deleteData = (Button) findViewById(R.id.delete_data);
63         deleteData.setOnClickListener(new View.OnClickListener() {
64             @Override
65             public void onClick(View v) {
66             // 删除数据
67                 Uri uri = Uri.parse("content://com.mycompany.database.provider/book/" + newId);
68                         getContentResolver().delete(uri, null, null);
69             }
70         });
71     }
72 }

 

if(DB::insert(‘test’,array(‘id’=>NULL,’name’=>’me’,’uid’=>1)))
showmessage(“数据插入成功”);

View Code

好了,起首测量试验。

证实:那边的数组的键名正是多少表中的字段名,键值正是插入的应和字段的值

   大家分别在那多个按键的点击事件之中管理了增加和删除改查的逻辑。

DB::fetch_all(‘SELECT * FROM %t WHERE panel=%d’,
array($this->_table, $panel), ‘uid’);

  1)Add
To Book: 增添数码的时候,首先调用了 Uri.parse()方法将叁个内容 U奥迪Q7I深入分析成
Uri对象,然后把要充足的多寡都贮存到 ContentValues对象中,接着调用
ContentResolver 的 insert()方法施行增加操作就足以了。注意
insert()方法会再次回到四个 Uri 对象,那个目的中含有了新添多少的
id,我们因而getPathSegments()方法将以此 id 收取,稍后会用到它。
  2卡塔尔国Query From
Book: 查询数据的时候,同样是调用了 Uri.parse()方法将二个内容 U君越I深入解析成
Uri对象,然后调用 ContentResolver 的
query()方法去询问数据,查询的结果当然照旧寄放在 Cursor对象中的。之后对
Cursor 举行遍历,从当中抽取查询结果,并逐项打字与印刷出来。
  3卡塔 尔(阿拉伯语:قطر‎Update
Book: 更新数据的时候,也是先将内容 U奇骏I 深入分析成 Uri
对象,然后把想要更新的多少贮存到ContentValues对象中,再调用
ContentResolver 的
update()方法实施更新操作就可以了。注意这里大家为了不想让 Book
表中其他的行受到影响,在调用 Uri.parse()方法时,给内容
U卡宴I的尾巴部分扩张了叁个 id,而这么些 id
便是增多数量时所重临的。那就象征大家只盼望更新刚刚增添的那条数据,Book
表中的其余行都不会受影响。
  4卡塔 尔(英语:State of Qatar)Delete
From Book: 删除数据的时候,也是使用同大器晚成的艺术深入分析了八个以 id 结尾的内容
U奥德赛I,然后调用ContentResolver 的
delete()方法推行删除操作就能够了。由于大家在剧情 UWranglerI
里钦点了二个id,由此只会删掉具备相应 id 的那行数据,Book
表中的别的数据都不会受影响。

查询DB,看看有未有数量进DB:

DB::fetch_all(‘SELECT * FROM %t WHERE uid=%d ORDER BY dateline DESC’,
array($this->_table, $uid), ‘bid’) : array();

  程序运营效果如下:

997755.com澳门葡京 12

注:
DZ中%号会当作参数,供给您传入,首先第一个你可以接收DB::table($this->_table)替代,第一个你能够用实实在在的标记,第八个的话你能够吧数值总结出来后填进去,那样的话应该就不会冒出问题了

  997755.com澳门葡京 13

997755.com澳门葡京 14

  按下Add按键后,再按下询问,在Android
Monitor中可以看见到:

 

04-25 21:49:18.327 31285-31285/com.mycompany.database D/MainActivity: book name is A Clash of Kings
04-25 21:49:18.327 31285-31285/com.mycompany.database D/MainActivity: book author is George Martin
04-25 21:49:18.327 31285-31285/com.mycompany.database D/MainActivity: book pages is 1040
04-25 21:49:18.337 31285-31285/com.mycompany.database D/MainActivity: book price is 22.85

 截图中呈现了部分查询结果,基本没什么难点了。

  按下Update后,再按下询问,可观望:

上面要做的是显得Shelf中的Book音讯,要等明日活干完技术持续写了。

04-25 22:11:10.768 31285-31285/com.mycompany.database D/MainActivity: book name is A Storm of Swords
04-25 22:11:10.768 31285-31285/com.mycompany.database D/MainActivity: book author is George Martin
04-25 22:11:10.768 31285-31285/com.mycompany.database D/MainActivity: book pages is 1216
04-25 22:11:10.768 31285-31285/com.mycompany.database D/MainActivity: book price is 24.05

 

  当按下Delete后,再按下询问,当时已未有数量展现了。

 

  //End.

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website