用 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
分享到:
相关推荐
5. **ADO.NET数据库访问**:在25-29章中,读者将学习如何使用C#连接和操作数据库,包括SQL Server或SQLite等。内容涵盖数据连接、数据适配器、数据集、数据表以及存储过程的使用。 6. **高级主题**:除了基础内容,...
内容概要:本文档介绍了管理系统的基本概念以及开发过程,着重于如何用C#语言配合SQLite数据库从零开始创建一个简化的库存管理系统,涉及数据模型定义、数据访问层建立和控制器设计等多个方面。此外,还提及了实际...
【C#版QQ入门项目详解】 C#版QQ是一个基于C#编程语言开发的即时通讯软件,它允许用户通过输入IP地址与其他用户进行聊天并实现添加好友等功能。这个项目不仅涵盖了C#的基础语法和面向对象编程思想,还涉及到网络通信...
在C# WinForm中,我们通常使用ADO.NET(.NET Framework的数据访问组件)来与数据库进行交互。ADO.NET提供了DataSet、DataTable、DataRow等类,它们可以在内存中存储和操作数据,同时DataAdapter用于在数据库和内存中...
创建和管理数据库文件,定义表结构,以及操作数据的基本SQL语句(如CREATE、INSERT、SELECT、UPDATE、DELETE)是SQLite入门的基础。 2. **事务处理**:SQLite支持ACID(原子性、一致性、隔离性和持久性)事务,确保...
《Visual C# 轻松入门》是一本旨在帮助初学者快速掌握C#编程语言的教程。本教程覆盖了C#编程的基础概念和技术,包括以下几个关键领域: 1. **变量、表达式和基本结构**:这部分讲解了C#的基础语法,如数据类型...
总的来说,"宾馆网站模板.NET2.0+SQLite(带源码)"是一个集成了前后端和数据库的完整示例,可以帮助初学者快速入门ASP.NET Web Forms开发,并了解如何与SQLite数据库进行集成。对于有一定基础的开发者,这个模板也是...
《C#数据库入门经典》是一本专为初学者设计的指南,旨在帮助读者掌握使用C#语言进行数据库操作的基础知识。这本书涵盖了多个重要的知识点,包括C#与SQL的交互、OLEDB和ADO.NET数据访问技术。以下是这些核心概念的...
《C#数据库入门经典(第2版)》是一本针对初学者深入浅出介绍如何使用C#语言进行数据库操作的权威教程。这本书以其丰富的实例和详细的源代码,为读者提供了全面的学习路径,帮助他们掌握数据库编程的核心技能。 C#...
C# .NET允许开发者使用多线程和异步编程模型来处理实时数据,确保程序在处理大量数据时仍能保持响应。Task类和async/await关键字是实现异步操作的强大工具。 六、可视化和图表展示 工控上位机往往需要实时显示设备...
7. **多媒体与硬件访问**:讲解如何利用C#访问Android的摄像头、GPS、传感器等硬件设备,以及处理音频、视频等多媒体内容的方法。 8. **调试与性能优化**:书中会介绍使用Visual Studio或Monodevelop进行Android...
《C# Windows应用程序开发入门详解》 C#作为.NET框架的核心编程语言,因其简洁、高效、类型安全等特性,被广泛应用于Windows桌面应用程序的开发。本资源“经典C#入门案例.rar”提供了一系列完整的开源代码,旨在...
【C#入门级程序的源代码】是一个针对初学者的编程资源,主要涵盖了使用C#语言和ASP.NET框架开发窗体应用的基础知识。这个程序是一个简单的图片管理程序,旨在帮助学习者理解如何在C#环境下处理图形用户界面(GUI)...
2. 数据库访问:ADO.NET是.NET框架的一部分,用于连接和操作数据库,如SQL Server、SQLite等。 七、多线程与并发 C#支持多线程编程,通过Thread类或Task类实现并发执行,提高程序性能。 八、单元测试与调试 Visual...
在本教程中,你将学习如何在C#中管理用户账户,创建安全的登录系统,使用加密技术保护敏感信息,以及实现基于角色的访问控制。这些知识对于构建安全的Web应用至关重要。 数据库操作是大多数应用程序的基础。教程会...
这些方法可能涉及数据库操作,使用ADO.NET或Entity Framework等数据访问技术。 2. **读者信息管理**:同样,`Reader`类应包含读者ID、姓名、联系方式、借阅权限等信息。读者的借阅历史可以通过关联类`BorrowRecord`...
2. **面向对象编程**:C#是一种面向对象的语言,书中会讲解类、对象、封装、继承、多态等核心概念,以及如何创建和使用类库。 3. **异常处理**:学习如何使用try-catch语句来捕获和处理程序运行时可能出现的错误,...
C#语法清晰,功能强大,适合初学者入门,也满足高级开发者的复杂需求。 在这个学生管理系统中,开发者可能使用了C#的类、对象、接口等核心概念来构建系统架构。例如,可能会有一个`Student`类,用于表示学生信息,...
为了更好地组织代码,通常会将数据库表映射为C#类(实体类),并在数据访问层(DAL)实现与数据库的交互。实体类代表了数据库中的记录,而DAL则封装了对数据库的所有操作,这样可以提高代码的可读性和可维护性。 五...
源代码可能包含对SQL Server或SQLite等数据库的交互,涉及数据访问层(DAL)的设计,如使用ADO.NET或者Entity Framework进行数据操作。开发者可以通过查看这部分代码,学习如何创建数据连接、执行SQL查询、处理结果...