C#连接Bmob云数据库编写简单的窗体程序

C#连接Bmob云数据库编写简单的窗体程序

今天的计划是编写一个c#窗体程序,用于保存自己收藏的网址,类似于网页收藏夹的功能。
Bmob后端云提供了简单便捷的云数据库,云函数以及短信邮件等服务,提供可靠的 Serverless云服务,轻松拥有开发中需要的各种后端能力
我们要使用Bmob,首先需要去Bmob官网进行注册,注册后点击我的控制台->应用key,将会看到四种密钥及其使用说明:

1.Application ID,SDK初始化必须用到此密钥
2.REST API Key,REST API请求中HTTP头部信息必须附带密钥之一
3.Secret Key,是SDK安全密钥,不可泄漏,在云函数测试云函数时需要用到
4.Master Key,超级权限Key。应用开发或调试的时候可以使用该密钥进行各种权限的操作,此密钥不可泄漏

在这里插入图片描述

在C#窗体程序中我们要用到的是Application ID和REST API Key
我选择的C#编译器是vs2017,打开VS2017,
文件->新建->项目,选择Visual c#下的Windows桌面,选择右侧Windows 窗体应用,输入名称,选择程序位置,一个窗体应用程序就创建完成了.

在这里插入图片描述

接下来我们需要下载安装SDK
Bmob C# SDK下载地址:https://github.com/bmob/BmobSharp/releases
下载后解压,将Windows文件夹下的Bmob-Windows.dll文件引用到你的项目工程中,如下图所示

在这里插入图片描述

新建模型类
要想对Bmob云端的数据进行操作,需要创建和数据表对应的模型类。在Bmob中,模型类需要继承自BmobTable,具体类的实现如下

public class WebFav : BmobTable
        {
            private String ftable;
            public BmobInt seq;
            public String webname;//收藏网址的备注名
            public String weburl;//收藏网址的URL
 
            public WebFav()
            {

            }
            public WebFav(String TableName)
            {
                this.ftable = TableName;
            }
            public override string table
            {
                get
                {
                    if (ftable != null)
                    {
                        return ftable;
                    }
                    return base.table;
                }
            }
            //读字段信息
            public override void readFields(BmobInput input)
            {
                base.readFields(input);
                this.seq = input.getInt("seq");
                this.webname = input.getString("webname");
                this.weburl = input.getString("weburl");
            }

            //写字段信息
            public override void write(BmobOutput output, bool all)
            {
                base.write(output, all);
                output.Put("seq", this.seq);
                output.Put("webname", this.webname);
                output.Put("weburl", this.weburl);
            }
        }

在正式对Bmob后端云进行操作之前,需要先初始化AppKey以及RestKey信息,也就是注册完成后获取的Application ID/RestKey信息
Bmob的初始化可以放在窗体的初始化方法“InitTh()"中,实现代码如下。

bmob = new BmobWindows();
//Bmob初始化,参数填写自己的Application ID和REST Key
bmob.initialize("Application ID", "REST Key");
//注册调试工具
BmobDebug.Register(msg => { Debug.WriteLine(msg); });

接下来进行窗体的设计编写
因为简单,所以整个窗体程序我只打算使用一个Form,整体设计思想如下:
用一个ComboBox来展示已经收藏的网址信息
用两个TextBox分别用于输入要收藏的网址以及网址备注名
加入几个Label和Button进行功能的细化
整体外观如下:

在这里插入图片描述

接下来讲一下程序具体的实现操作
一、加载收藏网页
我们从Bmob云数据库进行收藏的网址的载入,我们定义一个数组(链表也可以)用于存放加载到的网址信息,以便在当前程序调用中不需每次调用Bmob数据库

public string[] record = new string[200];//记录收藏网页信息

在从Bmob云端数据库访问数据时,我们还需要考虑到没有网络连接的情况(事实上,没有网络连接,就算打开了收藏夹,用处也不大),我们可以在没有网络连接的时候,从本地文件载入上次保存在本电脑上的收藏网址。具体代码如下:

//访问数据库
public void loadRecord()
        {
            comboboxRecord.Items.Clear();//将ComboBox清空
            int x = 0;
            var query = new BmobQuery();
            query.Count();
            bmob.Find<WebFav>("WebFav", query, (resp, exception) =>
            {
                if(exception==null)//没有异常发生,访问成功
                {

                    List<WebFav> lists = resp.results;
                    for(int i=0;i<lists.Count;i++)//将收藏网址的信息存入record数组中
                    {
                        record[2*i] = lists[i].webname;
                        record[2*i + 1] = lists[i].weburl;
                    }
                    x = lists.Count;
                    num = x;
                    record[2 * x] = "#";
                    label5.Visible = false;
                    for (int i = 1; i <= x; i ++)
                    {
                        comboboxRecord.Items.Add(Convert.ToString(i) + "." + record[(i-1)*2]);
                    }
                    //保存网址信息到本地
                    saveWeb();
                }
                else
                {
                    loadFromFile();//发生异常,从本地文件载入
                   // MessageBox.Show("从本地文件载入");
        
                }
            });
            

loadFromFile()用于从本地文件载入网址信息

 public void loadFromFile()
         {
             comboboxRecord.Items.Clear(); 
             int x = 0;
             try
             {
             //读取文件
                 StreamReader sr = new StreamReader(path,Encoding.UTF8);
                 string result = sr.ReadLine();
                 while (result != null)
                 {
                     record[x++] = result;
                     result = sr.ReadLine();
                 }

                 sr.Close();
                //MessageBox.Show(x.ToString());
                for (int i = 1; i < x; i+=2)
                 {
                     comboboxRecord.Items.Add(Convert.ToString((i+1)/2)+"."+record[i]);
                 }
             }
             catch (Exception ex)
             {

             }
         }

saveWeb()用于保存网址信息到本地

public void saveWeb()
        {
        //写入到文件
             StreamWriter sw = new StreamWriter(path,false);
            for(int i=0;i<num;i++)
            {
                sw.WriteLine(record[i * 2+1]);
                sw.WriteLine(record[2*i]);
                
            }
                   
                    sw.Close();
                    
        }

二、新增收藏网址
在两个TextBox的内容输入完成后,点击添加按钮,就可以将数据上传到Bmob数据库中

 private void buttonADD_Click(object sender, EventArgs e)
        {
            if(textBoxURL.Text!=string.Empty)
            {
                try
                {
                    webFav = new WebFav("WebFav");
                    webFav.weburl = textBoxURL.Text;
                    if (textBoxName.Text != string.Empty)//备注名为空时,备注名默认为网址
                    {
                        webFav.webname = textBoxName.Text;
                    }
                    else
                    {
                        webFav.webname = webFav.weburl;
                    }
                     bmob.Create("WebFav", webFav, (resp, exception) => {
                if (exception != null)
                {
                    MessageBox.Show("添加失败,检查网络连接");
                }
                else
                {
                    loadRecord();//添加了网址,需要重新加载
                    textBoxName.Clear();
                    textBoxURL.Clear();
                    // MessageBox.Show("添加成功!");
                }
            });         
                }
                catch(Exception ex)
                {

                }
            }
        }

三、补充细节
原始窗体的界面会比较简单,可以考虑:
更改背景,修改Form的BackgroudImage属性进行更改
更改窗体图标,右键项目名称,选择属性,选择应用程序,点击浏览,更换图标

在这里插入图片描述
增加日期时间功能,在组件中找到Timer,拉入窗体中,设置Interval属性为500(毫秒),计时器时间中编写代码,让时间每隔500毫秒刷新,字体颜色也随之发生变化

 private void timer1_Tick(object sender, EventArgs e)
        {
            int red = r.Next(256);//r = new Random()
            int green = r.Next(256);
            int blue = r.Next(256);
            labelTime.ForeColor = Color.FromArgb(red, green, blue);
            labelTime.Text = DateTime.Now.ToString();
        }

四、网址跳转
增加一个Button,当在ComboBox中选中网址时,可以进行调用系统默认浏览器进行打开网页

private void button1_Click(object sender, EventArgs e)
        {
            int x = (int)comboboxRecord.SelectedIndex;//获取ComboBox选取项目的索引
            if(x>=0)//x=-1时,表明未选中
            {
                Process.Start(record[2*x+1]);//调用系统默认浏览器进行打开网页
            }
        }

五、手动同步
加入新的Button,用于手动调用loadRecord(),进行手动同步

  private void button2_Click(object sender, EventArgs e)
        {
            loadRecord();
        }

至此,一个简单的C#使用Bmob数据库的窗体程序就完成了。
感谢!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值