`
kingsz1
  • 浏览: 155024 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用 C# 访问 SQLite 入门(2)

阅读更多

用 C# 访问 SQLite (2)

 

6. Form 与 DataGridView

 

在 Solutuon Explorer 点击 Form1.cs , 在打开的 Form1[Design] 添加控件

 

在 Toolbox 拉入4个 Label, 分别命名,例如:lblID, lblBookname, lblPrice, lblGuid

在 Toolbox 拉入4个 TextBox, 分别命名,例如: txtID, txtBookname, txtPrice, txtGuid

在 Toolbox 拉入2个 Button, 分别命名,例如: btnExit, btnSave

在 Toolbox 拉入1个 DataGridView, 命名,例如: dgv1

 

适当排列和布局,就可以达到这样的一个输入和现实界面:

 


 

当然,可以把 Form1 的尺寸调大,把各个控件的尺寸也放大一些。

 

双击 Form1 就会打开 Form1.cs 来输入语句。


 

在 Form1.cs[Design] 分别双击 btnExit , btnSave 和 dgv1 然后在 Form1.cs 输入相关的语句:

 

        private void Form1_Load(object sender, EventArgs e)
        {
            initView1();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            //find a GUID for new row to insert into DB
            StringBuilder guidSB = new StringBuilder(System.Guid.NewGuid().ToString());
            guidSB.Replace("-", "");  //replace -
            string guidStr = guidSB.ToString();

            //new book object            
            Book book1 = new Book();
            book1.ID = Convert.ToInt32(txtID.Text);
            book1.BookName = txtBookname.Text;
            book1.Price = Convert.ToDecimal(txtPrice.Text);
            book1.Rowguid = guidStr;

            //save to DB
            BookDAL.CreateBook(book1);

            //Read the rows from DB and display in dgv
            initView1();
        }

        private void dgv1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        //===================================================
        // Click a row to dusplay its field in textbox
        //===================================================
        private void dgv1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0) return;
            if (e.ColumnIndex < 0) return;

            int rowIndx = dgv1.CurrentCell.RowIndex;

            txtID.Text = this.dgv1[0, e.RowIndex].Value.ToString();  //column 0
            txtBookname.Text = this.dgv1[1, e.RowIndex].Value.ToString();  //column 1
            txtPrice.Text = this.dgv1[2, e.RowIndex].Value.ToString();  //column 2
            txtGuid.Text = this.dgv1[3, e.RowIndex].Value.ToString();  //column 3
        }


        //===================================================
        // init the data view: datagridview and text boxes
        //===================================================
        private void initView1()
        {
            dgv1.DataSource = null;

            DataTable dt1 = new DataTable();

            dt1 = BookDAL.GetAllBook();
            if (dt1.Rows.Count > 0)
            {
                dgv1.DataSource = dt1;
            }

        }
 

这里需要特别说明的是 DataGirdView 的点击事件。我们希望 点一下 DataGridView 的任一单元格, 就把这行的数据显示到 TextBox 对应项。

 

在 dgv1 双击 会产生这个事件控制段:

 

        private void dgv1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
 

但是,这个 CellContentClick 控制不是对Cell 点击的控制,在其中加入代码,在 鼠标点击 Cell (单元格) 时不会触发这个事件。所以,我们要手工加入 CellClick 的事件控制:

 

        private void dgv1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0) return;
            if (e.ColumnIndex < 0) return;

            int rowIndx = dgv1.CurrentCell.RowIndex;

            txtID.Text = this.dgv1[0, e.RowIndex].Value.ToString();  //column 0
            txtBookname.Text = this.dgv1[1, e.RowIndex].Value.ToString();  //column 1
            txtPrice.Text = this.dgv1[2, e.RowIndex].Value.ToString();  //column 2
            txtGuid.Text = this.dgv1[3, e.RowIndex].Value.ToString();  //column 3
        }

 

这样就可以了吗?还不行。

 

因为 这个 CellClick 是你自己加入的,还不能被识别,需要在 Form1.Designer.cs 加入这个 CellClick 的识别:

 

在 Solution Explorer 在 Form1.cs 下面, 点 Form1.Designer.cs, 点  Open

 


 

点一下 “Windows Form Designer generated code” 前面的 + 号 ,就展开各控件的定义设置语句。

 

在 dgv1 下加入 CellClick 的定义:

 


 

保存,关闭 Form1.Designer.cs 即可。

 

这是很重要的一步,在网上多数的例子都是列出数据库操作语句,而这个设置就没有特别说明。我就是在网上搜索了很多例子,最后是在 msdn 论坛发问,才得到指点,而添加这一行来控制 单元格的点击操作。

 

其他的数据库操作,例如 插入,更新,删除,等等,可以看网上的例子。

 

 

7. SQLite ADO.NET 版本问题

 

现在可以调试一下,看看运行的效果:

 

在 VS 菜单,Debug -> Start Debugging

 


就会看到一个 Mixed mode 错误。原因么,就是因为这个 SQLite ADO.NET 是支持 2.0 runtime 的, 而我们现在是在 .NET 4.0 环境下来使用,所以需要特别的设置。


 

那特别的设置在哪里呢? 在 App.config 文件, 而这个文件缺省并不存在,需要手工添加:

 

先关闭 调试状态, Debug -> Stop Debugging

 

在 Solution Explorer 点 项目名, 按鼠标右键,选 Add -> New Item

 


 

在弹出的对话框,点选Application Configuration File, 然后点 Add 添加。

 


 

在打开的 App.config 编辑窗口,加入一行:

 

<startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

 


 

保存,关闭 App.config 即可。

 

再试运行一下吧:

 


 

现在可以了。在 各个 textbox 输入数据,然后点 Save 数据就插入 数据库,并在 Datagridview 显示出来。点击 Datagridview 的任一单元格,这行的数据就显示到 textbox 可供编辑。

 

这样一个很简单的 SQLite 数据库操作就完成了。但是,以上的操作还是太简单,需要添加的功能太多了,可以参考网上的很多例子来逐步完善。

 

 

:-

  • 大小: 13.9 KB
  • 大小: 11.8 KB
  • 大小: 18.5 KB
  • 大小: 16.3 KB
  • 大小: 9.2 KB
  • 大小: 15.2 KB
  • 大小: 17 KB
  • 大小: 21.1 KB
  • 大小: 8.4 KB
  • 大小: 18.8 KB
分享到:
评论

相关推荐

    ASP.NET3.5从入门到精通

    10.6 访问SQLite 10.6.1 SQLite 简介 10.6.2 SQLite 连接方法 10.7 小结 第四篇 ASP.NET网络编程 第 11 章用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web 窗体...

    asp.net知识库

    ASP.NET2.0 ObjectDataSource的使用详解(2) TextDataSource(1) — DataSourceControl内幕 TextDataSource(2) — 翠花,上“数据” ASP.NET2.0 ObjectDataSource的使用详解(3) ASP.NET2.0 快速入门 ----默认...

    EntityFrameworkCore.BootKit:EntityFrameworkCore入门套件

    EntityFrameworkCore引导工具包(EFBK)是用于使用.NET EntityFrameworkCore的快速入门数据库连接库。 特征: 继承自EntityFrameworkCore触发器以启用条目更新通知。 支持多种数据库,例如MySql,SQL Server,...

    ASP.NET 3.5 开发大全 压缩包2

    第10章:本章详细的介绍了如何使用类成员进行不同的数据源的访问,这些数据源包括MySql、Access、Excel、Txt以及SQLite。 第11章:本章主要讲解了用户控件和自定义控件的编程方法,以便开发人员能够高效的进行功能的...

    ASPNET35开发大全第一章

    10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换...

    ASP.NET 3.5 开发大全

    10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换...

    ASP.NET 3.5 开发大全1-5

    10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换...

    ASP.NET 3.5 开发大全word课件

    10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换...

    ASP.NET 3.5 开发大全 压缩包1

    第10章:本章详细的介绍了如何使用类成员进行不同的数据源的访问,这些数据源包括MySql、Access、Excel、Txt以及SQLite。 第11章:本章主要讲解了用户控件和自定义控件的编程方法,以便开发人员能够高效的进行功能的...

    ASP.NET 3.5 开发大全11-15

    10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换...

    Android程序设计基础

     阅读本书唯一的前提条件,是具备对Java编程或类似面向对象语言(比如说C#)的基本理解,不需要拥有为移动设备开发软件的经验。实际上,如果你确实有这方面的经验,反倒应该忘记它们。Android是如此与众不同,因此...

Global site tag (gtag.js) - Google Analytics