WPF【10_1】数据库与WPF实战

10-2 【操作】SQL Server 安装

Express 版本
SQL Server 2019 Express是SQL Server的一个免费版本,非常适合用于桌面、Web和小型服务器应用程序的开发和生产。

安装时,连接字符串记录一下:
Server=localhost\SQLEXPRESS01;Database=master;Trusted_Connection=True;

SQL Server安装成功后,打开 VS软件,左侧 Server Explorer中选中“Data Connection”右击 - Add Connection...,弹出界面中选择“Microsoft SQL Server”,点击“Continue”,弹出安装缺失组件,确定,安装一下。

Server name: localhost\SQLEXPRESS01
选中 Select or enter a database name: master

10-3 【实战】dataset与table设置

左侧中,选中“Tables”右击 - Add New Table。
对于数据表名称是否使用复数,是存在争议的 使用 Customers 和 Customer 都没有问题的。
选中表中的 Id列,右侧属性中选中 Identity Specificatic: True

建完表,添加一些示例数据。


10-4 【实战】显示列表型数据:客户列表

VS新建项目:WPF_CMS
新建完项目,为了使用数据库,安装一个数据库工具。选中项目“WPF_CMS”右击 - Manage NuGet Packages... ,在 Browse标签页中搜索:system.data.sqlclient ,安装最新版本即可。

左侧 Server Explorer中,点击数据库,右侧属性窗口中“Connection String”就有连接字符串。
左侧选中数据库,右击 - New Query 。

…… 07:00 
数据库连接,需要占用IO资源,一般来说一次完成数据库访问,需要执行:打开数据库、读取数据库、关闭数据库 这三个操作。
使用数据库适配器,只需要关注业务层面的操作,比如数据库查询,而打开、关闭数据库这些基本操作,都会由数据库适配器自动帮忙来完成。
只不过,在使用数据库适配器时,需要使用using这个特殊的语法。

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from Customers", _sqlConnection);
using (sqlDataAdapter)
{
    DataTable customerTable = new DataTable();
    sqlDataAdapter.Fill(customerTable);
}

…… 12:30
数据库的操作实际上是一个 IO读写操作,读写操作涉及到外部环境和外部系统的访问,对于访问外部资源的操作,最好使用 try ... catch ,这样就算数据库出问题了,也不会造成系统级别的崩溃。

10-5 【操作】数据关系与关联表

Appointments(预约表)

CREATE TABLE [dbo].Appointments 
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Time] DATETIME NOT NULL,
    [CustomerId] INT NOT NULL,
    CONSTRAINT [FK_Appointments_Customers] FOREIGN KEY (CustomerId) REFERENCES Customers(Id)
)

10-6 【实战】显示关联型数据:客户预约记录

string query = "select * from Appointments join Customers on Appointments.CustomerId = Customers.Id where Customers.Id = @CustomerId";

SqlCommand sqlCommand = new SqlCommand(query, _sqlConnection);
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
sqlCommand.Parameters.AddWithValue("@CustomerId", customerId);

10-7 【实战】删除数据

虽然数据库删除了数据,但是最新的数据并不能反映在UI界面中,所以要刷新一下UI列表
customerList_SelectionChanged(null, null);

对于IO操作,要随时准备系统崩溃的可能性,try ... catch 。
如果错误是在数据库链接打开以后,执行数据库操作的时候发生的,那么可能会跳过数据库关闭的操作。
那么数据库将保持连接的状态。所以,还需要加入 finally

我们在删除客户之前,应该先通过外键关系删除它所有的预约,然后再删除客户。

10-8 【实战】添加数据

10-9 【实战】更新数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值