• 作者:老汪软件技巧
  • 发表时间:2024-09-05 11:01
  • 浏览量:

1 前言

前面已经将存入的界面以及存入的数据绑定进行了说明,按照我们的设计思路,现在就是需要将按钮的click事件把数据存入到数据库中。

2 按钮设计2.1 View界面前端设计:

这里我们设计一个按钮,并通过Command属性绑定了一个命令。当按钮被点击时,会触发绑定的命令。

2.2 Model设计:

private CommandBase _loadclothinfo_btn;
public CommandBase LoadClothInfo_Btn
{
    get
    {
        if (_loadclothinfo_btn == null)
        {
            _loadclothinfo_btn = new CommandBase();
            _loadclothinfo_btn.DoExecute = new Action<object>(obj =>
            {
            	这里可以对已有数据进行操作。
            });
        }
        return _loadclothinfo_btn;
    }
}

在get中,如果 _loadclothinfo_btn 为 null,则创建一个新的 CommandBase 实例,并设置其 DoExecute 属性。DoExecute 是一个动作委托,当命令被触发时执行。DoExecute 属性允许你定义当命令被触发时应该执行的具体操作。这通常是一个动作,比如更新数据库、发送网络请求或者更改视图的状态。这里就满足我们后续进行数据库存入的需要。我们在这里就可以完成数据的存入:model中定义了名称、类型等数据,在他们获得数据的时候,按下这个按钮,按钮事件执行存入操作。

SQL.SaveData(InputName_tb, InputType_tb, InputColor_tb, InputSize_tb, InputPrice_tb, ClothAddress);

手把手教你搭WPF架构之数据存入SQL——第二部分存入的实现__手把手教你搭WPF架构之数据存入SQL——第二部分存入的实现

将上述的使用直接写在DoExecute 委托中执行。

2.3 数据库存储的展开说明

using (SQLiteConnection connection = new SQLiteConnection(数据库地址))
{
    connection.Open();
    using (DbTransaction transaction = connection.BeginTransaction())
    {
        using (SQLiteCommand command = new SQLiteCommand(connection))
        {
            command.CommandText = "insert into DataInfo_tab (Name) values ('" + Name + "')";
            affectedRows = command.ExecuteNonQuery();
        }
        transaction.Commit();
    }
}

对SQLiteConnection、DbTransaction 和 SQLiteCommand使用来执行一个插入操作,并将结果存储在 affectedRows 变量中。相当于我们在连接数据库后,打开数据库,然后执行事务将数据写入,写入成功后提交事务保证数据写入正确!

2.4 ViewModel部分说明

这里需要将Model定义的属性进行实例化,也就是model的DataInputModel实例化,也就是按钮、输入框绑定的属性实例化。

public DataInputModel DataInput { get; set; } = new DataInputModel();

这里强调下,View界面后台需要将this.DataContext绑定ViewModel,否则数据更新和事件响应都不生效!

3 总结

结合之前的前置准备和今天的介绍,相信已经将整个数据存入流程与具体实现已经介绍得比较清楚了,还有问题的话,欢迎大家留言!