`
kingsz1
  • 浏览: 157182 次
  • 性别: 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
分享到:
评论

相关推荐

    Visual C# 2010从入门到精通 源代码、勘误、附录、易读版.1-5章.25-29章

    5. **ADO.NET数据库访问**:在25-29章中,读者将学习如何使用C#连接和操作数据库,包括SQL Server或SQLite等。内容涵盖数据连接、数据适配器、数据集、数据表以及存储过程的使用。 6. **高级主题**:除了基础内容,...

    C#和SQLite实现简易库存管理系统的设计与开发

    内容概要:本文档介绍了管理系统的基本概念以及开发过程,着重于如何用C#语言配合SQLite数据库从零开始创建一个简化的库存管理系统,涉及数据模型定义、数据访问层建立和控制器设计等多个方面。此外,还提及了实际...

    C#版QQ 入门项目

    【C#版QQ入门项目详解】 C#版QQ是一个基于C#编程语言开发的即时通讯软件,它允许用户通过输入IP地址与其他用户进行聊天并实现添加好友等功能。这个项目不仅涵盖了C#的基础语法和面向对象编程思想,还涉及到网络通信...

    C# WinForm数据库入门

    在C# WinForm中,我们通常使用ADO.NET(.NET Framework的数据访问组件)来与数据库进行交互。ADO.NET提供了DataSet、DataTable、DataRow等类,它们可以在内存中存储和操作数据,同时DataAdapter用于在数据库和内存中...

    SQLite权威指南(第2版)

    创建和管理数据库文件,定义表结构,以及操作数据的基本SQL语句(如CREATE、INSERT、SELECT、UPDATE、DELETE)是SQLite入门的基础。 2. **事务处理**:SQLite支持ACID(原子性、一致性、隔离性和持久性)事务,确保...

    Visual C# 轻松入门

    《Visual C# 轻松入门》是一本旨在帮助初学者快速掌握C#编程语言的教程。本教程覆盖了C#编程的基础概念和技术,包括以下几个关键领域: 1. **变量、表达式和基本结构**:这部分讲解了C#的基础语法,如数据类型...

    宾馆网站模板.NET2.0+SQLite(带源码)

    总的来说,"宾馆网站模板.NET2.0+SQLite(带源码)"是一个集成了前后端和数据库的完整示例,可以帮助初学者快速入门ASP.NET Web Forms开发,并了解如何与SQLite数据库进行集成。对于有一定基础的开发者,这个模板也是...

    C#数据库入门经典(精)

    《C#数据库入门经典》是一本专为初学者设计的指南,旨在帮助读者掌握使用C#语言进行数据库操作的基础知识。这本书涵盖了多个重要的知识点,包括C#与SQL的交互、OLEDB和ADO.NET数据访问技术。以下是这些核心概念的...

    C#数据库入门经典(第2版)

    《C#数据库入门经典(第2版)》是一本针对初学者深入浅出介绍如何使用C#语言进行数据库操作的权威教程。这本书以其丰富的实例和详细的源代码,为读者提供了全面的学习路径,帮助他们掌握数据库编程的核心技能。 C#...

    C# .NET工控上位机开发

    C# .NET允许开发者使用多线程和异步编程模型来处理实时数据,确保程序在处理大量数据时仍能保持响应。Task类和async/await关键字是实现异步操作的强大工具。 六、可视化和图表展示 工控上位机往往需要实时显示设备...

    C#开发Android应用实战 使用Mono for Android和.NET C#(美)麦克卢尔

    7. **多媒体与硬件访问**:讲解如何利用C#访问Android的摄像头、GPS、传感器等硬件设备,以及处理音频、视频等多媒体内容的方法。 8. **调试与性能优化**:书中会介绍使用Visual Studio或Monodevelop进行Android...

    经典C#入门案例.rar

    《C# Windows应用程序开发入门详解》 C#作为.NET框架的核心编程语言,因其简洁、高效、类型安全等特性,被广泛应用于Windows桌面应用程序的开发。本资源“经典C#入门案例.rar”提供了一系列完整的开源代码,旨在...

    C#入门级程序的源代码

    【C#入门级程序的源代码】是一个针对初学者的编程资源,主要涵盖了使用C#语言和ASP.NET框架开发窗体应用的基础知识。这个程序是一个简单的图片管理程序,旨在帮助学习者理解如何在C#环境下处理图形用户界面(GUI)...

    基于windows桌面的c#基础知识,

    2. 数据库访问:ADO.NET是.NET框架的一部分,用于连接和操作数据库,如SQL Server、SQLite等。 七、多线程与并发 C#支持多线程编程,通过Thread类或Task类实现并发执行,提高程序性能。 八、单元测试与调试 Visual...

    visual c# 入门

    在本教程中,你将学习如何在C#中管理用户账户,创建安全的登录系统,使用加密技术保护敏感信息,以及实现基于角色的访问控制。这些知识对于构建安全的Web应用至关重要。 数据库操作是大多数应用程序的基础。教程会...

    c#源码-图书馆管理系统.rar

    这些方法可能涉及数据库操作,使用ADO.NET或Entity Framework等数据访问技术。 2. **读者信息管理**:同样,`Reader`类应包含读者ID、姓名、联系方式、借阅权限等信息。读者的借阅历史可以通过关联类`BorrowRecord`...

    C# 入门经典 (第五版) 源码.7z

    2. **面向对象编程**:C#是一种面向对象的语言,书中会讲解类、对象、封装、继承、多态等核心概念,以及如何创建和使用类库。 3. **异常处理**:学习如何使用try-catch语句来捕获和处理程序运行时可能出现的错误,...

    学生管理系统源代码(c#)

    C#语法清晰,功能强大,适合初学者入门,也满足高级开发者的复杂需求。 在这个学生管理系统中,开发者可能使用了C#的类、对象、接口等核心概念来构建系统架构。例如,可能会有一个`Student`类,用于表示学生信息,...

    C#学生管理系统(适合刚入门的朋友)

    为了更好地组织代码,通常会将数据库表映射为C#类(实体类),并在数据访问层(DAL)实现与数据库的交互。实体类代表了数据库中的记录,而DAL则封装了对数据库的所有操作,这样可以提高代码的可读性和可维护性。 五...

    C#企业人事管理系统源代码

    源代码可能包含对SQL Server或SQLite等数据库的交互,涉及数据访问层(DAL)的设计,如使用ADO.NET或者Entity Framework进行数据操作。开发者可以通过查看这部分代码,学习如何创建数据连接、执行SQL查询、处理结果...

Global site tag (gtag.js) - Google Analytics