C#学习(九)——数据库与WPF

一、创建WPF项目链接数据库

首先创建WPF项目,在nuget安装包中下载System.Data.SqlClient
在这里插入图片描述
配置数据库的连接字符串来连接数据库
创建示例数据库,拥有两个table:

CREATE TABLE [dbo].[Customers] (
    [Id]       INT         IDENTITY (1, 1) NOT NULL,
    [Name]     NCHAR (50)  NOT NULL,
    [IdNumber] NCHAR (18)  NOT NULL,
    [Address]  NCHAR (100) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

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)
)

实现UI界面对于数据库数据的显示
MainWindow.xaml.cs

public partial class MainWindow : Window
{
   
    private SqlConnection _sqlConnection;
    public MainWindow()
    {
   
        InitializeComponent();
        string connectionString = "数据库连接字符串";//填入自己的数据库连接字符串

        _sqlConnection = new SqlConnection(connectionString);

        ShowCustomers();
    }

    //访问数据库
    private void ShowCustomers()
    {
   
        //防止数据库死机等意外导致以下操作全部失败,系统崩溃
        try
        {
   
            SqlDataAdapter adapter = new SqlDataAdapter("select * from Customers", _sqlConnection);
            //数据库适配器可以帮我们解决数据库的打开关闭
            using (adapter)
            {
   
                DataTable customerTable = new DataTable();
                adapter.Fill(customerTable);

                customerList.DisplayMemberPath = "Name";
                //绑定数据
                customerList.SelectedValuePath = "Id";
                //绑定数据源
                customerList.ItemsSource = customerTable.DefaultView;
            }
        }catch (Exception ex)
        {
   
            MessageBox.Show(ex.ToString());
        }        
    }

	private void customerList_SelectionChanged(object sender, SelectionChangedEventArgs e)
	{
   
	    try
	    {
   
	        //查询Appointments.CustomerId = Customers.Id且为参数传入的Id,@为参数引导
	        string query = "select * from Appointments join Customers on Appointments.CustomerId = Customers.Id where Customers.Id = @CustomerId";
	
	        var customerId = customerList.SelectedValue;
	        //用于删除预约信息时,会先删除customerId,造成customerId为空情况
	        if (customerId == null)
	        {
   
	            appointmentList.ItemsSource = null;
	            return;
	        }        
	
	        SqlCommand sqlCommand = new SqlCommand(query, _sqlConnection);
	
	        SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
	        //键值对数据在此聚合
	        sqlCommand.Parameters.AddWithValue("@CustomerId", customerId);
		
	        using (sqlDataAdapter)
	        {
   
	            DataTable appointmentTable = new 
  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值