惠州网站建设(推荐乐云践新)/搜索引擎入口官网

惠州网站建设(推荐乐云践新),搜索引擎入口官网,wordpress guid,fc网页游戏排行榜WPF高级 | WPF 与数据库交互:连接、查询与数据更新 前言一、数据库交互基础概念1.1 数据库简介1.2 数据访问技术 二、WPF 与数据库连接2.1 连接字符串2.2 建立连接 三、WPF 中的数据查询3.1 使用ADO.NET进行数据查询3.2 使用 Entity Framework 进行数据查询3.3 使用…

在这里插入图片描述
在这里插入图片描述

WPF高级 | WPF 与数据库交互:连接、查询与数据更新

  • 前言
  • 一、数据库交互基础概念
    • 1.1 数据库简介
    • 1.2 数据访问技术
  • 二、WPF 与数据库连接
    • 2.1 连接字符串
    • 2.2 建立连接
  • 三、WPF 中的数据查询
    • 3.1 使用ADO.NET进行数据查询
    • 3.2 使用 Entity Framework 进行数据查询
    • 3.3 使用 Dapper 进行数据查询
  • 四、WPF 中的数据更新
    • 4.1 使用ADO.NET进行数据更新
    • 4.2 使用 Entity Framework 进行数据更新
    • 4.3 使用 Dapper 进行数据更新
  • 五、数据绑定与显示
    • 5.1 将查询结果绑定到 WPF 控件
    • 5.2 实现数据的实时更新显示
  • 六、错误处理与事务
    • 6.1 错误处理
    • 6.2 事务处理
  • 七、总结
  • 结束语
  • 优质源码分享

WPF高级 | WPF 与数据库交互:连接、查询与数据更新 ,在现代应用程序开发中,数据的存储和管理至关重要。Windows Presentation Foundation(WPF)作为一款强大的图形界面开发框架,常常需要与数据库进行交互,以实现数据的持久化存储、读取和更新。本文将深入探讨 WPF 与数据库交互的各个方面,包括数据库连接的建立、数据查询的执行以及数据更新的操作,并通过丰富的代码示例和详细的概念解释,帮助读者掌握这一关键技术。

前言

    在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

    在当今数字化时代,桌面应用程序的用户界面(UI)设计至关重要,它直接影响着用户体验与产品的竞争力。而 WPF(Windows Presentation Foundation)作为微软推出的一款强大的 UI 框架,其布局系统更是构建精美界面的核心要素。WPF 布局系统为开发者提供了丰富多样的布局方式,能够轻松应对各种复杂的界面设计需求,无论是简洁明了的工具软件,还是功能繁杂的企业级应用,都能借助其打造出令人惊艳的视觉效果与流畅的交互体验。

    WPF从入门到精通专栏,旨在为读者呈现一条从对 WPF(Windows Presentation Foundation)技术懵懂无知到精通掌握的学习路径。首先从基础入手,介绍 WPF 的核心概念,涵盖其独特的架构特点、开发环境搭建流程,详细解读布局系统、常用控件以及事件机制等基础知识,帮助初学者搭建起对 WPF 整体的初步认知框架。随着学习的深入,进阶部分聚焦于数据绑定、样式模板、动画特效等关键知识点,进一步拓展 WPF 开发的能力边界,使开发者能够打造出更为个性化、交互性强的桌面应用界面。高级阶段则涉及自定义控件开发、MVVM 设计模式应用、多线程编程等深层次内容,助力开发者应对复杂的业务需求,构建大型且可维护的应用架构。同时,通过实战项目案例解析,展示如何将所学知识综合运用到实际开发中,从需求分析到功能实现再到优化测试,全方位积累实践经验。此外,还探讨了性能优化、与其他技术集成以及安全机制等拓展性话题,让读者对 WPF 技术在不同维度有更深入理解,最终实现对 WPF 技术的精通掌握,具备独立开发高质量桌面应用的能力。

🛕 点击进入WPF从入门到精通专栏

在这里插入图片描述

一、数据库交互基础概念

1.1 数据库简介

    数据库是按照数据结构来组织、存储和管理数据的仓库。常见的数据库管理系统(DBMS)有 SQL Server、MySQL、Oracle 等。在 WPF 应用中,选择合适的数据库取决于项目的需求,如数据量大小、性能要求、成本等因素。例如,SQL Server 是微软的关系型数据库,与.NET 框架集成度高,适合企业级应用;MySQL 是开源的关系型数据库,成本低,性能较好,广泛应用于各种规模的项目。

1.2 数据访问技术

    在.NET 开发中,有多种数据访问技术可用于 WPF 与数据库交互,常见的有ADO.NET、Entity Framework 和 Dapper。

    ADO.NET:是.NET Framework 中用于访问数据的基本技术,它提供了一组用于与各种数据源进行交互的类,包括数据库、文件系统等。ADO.NET主要由 Connection、Command、DataReader、DataAdapter 等对象组成。例如,使用ADO.NET连接 SQL Server 数据库:

using System.Data.SqlClient;string connectionString = "Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD";
using (SqlConnection connection = new SqlConnection(connectionString))
{connection.Open();// 在这里执行数据库操作
}

    Entity Framework:是一种对象关系映射(ORM)框架,它允许开发者使用.NET 对象来操作数据库,而无需编写大量的 SQL 语句。Entity Framework 会自动将对象的操作转换为对应的 SQL 语句。例如,使用 Entity Framework 创建一个简单的数据库上下文:

using System.Data.Entity;public class MyDbContext : DbContext
{public DbSet<Product> Products { get; set; }
}public class Product
{public int Id { get; set; }public string Name { get; set; }public decimal Price { get; set; }
}

    Dapper:是一个轻量级的 ORM 框架,它在性能上表现出色,适用于对性能要求较高的场景。Dapper 主要通过SqlMapper类来执行 SQL 语句,并将结果映射到对象。例如,使用 Dapper 查询数据:

using Dapper;
using System.Data.SqlClient;string connectionString = "Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD";
using (SqlConnection connection = new SqlConnection(connectionString))
{var products = connection.Query<Product>("SELECT * FROM Products").ToList();
}

二、WPF 与数据库连接

2.1 连接字符串

    连接字符串是用于建立与数据库连接的关键信息,它包含了数据库服务器地址、数据库名称、用户名、密码等信息。连接字符串的格式因数据库类型而异。例如,SQL Server 的连接字符串格式如下:

Data Source=服务器名称;Initial Catalog=数据库名称;User ID=用户名;Password=密码

    MySQL 的连接字符串格式如下:

server=服务器地址;database=数据库名称;uid=用户名;pwd=密码;

    在 WPF 应用中,可以将连接字符串存储在配置文件(如app.config或web.config)中,以便于管理和修改。例如,在app.config中添加连接字符串:

<configuration><connectionStrings><add name="MyConnectionString" connectionString="Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD" providerName="System.Data.SqlClient" /></connectionStrings>
</configuration>

    在代码中读取连接字符串:

string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

2.2 建立连接

    使用ADO.NET建立连接:通过SqlConnection类(针对 SQL Server)或其他数据库对应的连接类来建立连接。

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{try{connection.Open();MessageBox.Show("连接成功!");}catch (Exception ex){MessageBox.Show("连接失败:" + ex.Message);}
}

    使用 Entity Framework 建立连接:在创建DbContext实例时,Entity Framework 会根据配置文件中的连接字符串自动建立连接。

using System.Data.Entity;public class MyDbContext : DbContext
{public MyDbContext() : base("name=MyConnectionString"){}public DbSet<Product> Products { get; set; }
}在使用时:
using (MyDbContext context = new MyDbContext())
{// 在这里执行数据库操作
}

三、WPF 中的数据查询

3.1 使用ADO.NET进行数据查询

    使用 SqlDataReader 读取数据:SqlDataReader是一种快速、只进的读取器,用于从数据库中读取数据。

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{string query = "SELECT * FROM Products";using (SqlCommand command = new SqlCommand(query, connection)){connection.Open();using (SqlDataReader reader = command.ExecuteReader()){while (reader.Read()){int id = reader.GetInt32(0);string name = reader.GetString(1);decimal price = reader.GetDecimal(2);// 处理读取到的数据}}}
}

    使用 DataSet 和 DataAdapter 填充数据:DataSet是一个内存中的数据缓存,DataAdapter用于在数据库和DataSet之间进行数据传输。

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{string query = "SELECT * FROM Products";using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection)){DataSet dataSet = new DataSet();adapter.Fill(dataSet, "Products");// 处理dataSet中的数据}
}

3.2 使用 Entity Framework 进行数据查询

    Entity Framework 提供了 LINQ to Entities 查询语法,使得查询操作更加简洁和直观。

using (MyDbContext context = new MyDbContext())
{var products = from p in context.Productswhere p.Price > 100orderby p.Nameselect p;foreach (var product in products){// 处理查询结果}
}

    还可以使用 Lambda 表达式进行查询:

using (MyDbContext context = new MyDbContext())
{var products = context.Products.Where(p => p.Price > 100).OrderBy(p => p.Name).ToList();foreach (var product in products){// 处理查询结果}
}

3.3 使用 Dapper 进行数据查询

    Dapper 的查询操作基于 SQL 语句,通过Query方法执行查询并将结果映射到对象。

using Dapper;
using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{string query = "SELECT * FROM Products WHERE Price > @Price";var products = connection.Query<Product>(query, new { Price = 100 }).ToList();foreach (var product in products){// 处理查询结果}
}

四、WPF 中的数据更新

4.1 使用ADO.NET进行数据更新

    使用 SqlCommand 执行更新语句:通过SqlCommand的ExecuteNonQuery方法执行 SQL 更新语句。

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{string updateQuery = "UPDATE Products SET Price = @NewPrice WHERE Id = @Id";using (SqlCommand command = new SqlCommand(updateQuery, connection)){command.Parameters.AddWithValue("@NewPrice", 150.0m);command.Parameters.AddWithValue("@Id", 1);connection.Open();int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){MessageBox.Show("数据更新成功!");}else{MessageBox.Show("数据更新失败!");}}
}

    使用 DataAdapter 更新 DataSet 并同步到数据库:先修改DataSet中的数据,然后通过DataAdapter的Update方法将更改同步到数据库。

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{string query = "SELECT * FROM Products";using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection)){SqlCommandBuilder builder = new SqlCommandBuilder(adapter);DataSet dataSet = new DataSet();adapter.Fill(dataSet, "Products");DataRow row = dataSet.Tables["Products"].Rows[0];row["Price"] = 150.0m;adapter.Update(dataSet, "Products");}
}

4.2 使用 Entity Framework 进行数据更新

    修改实体对象并保存更改:在 Entity Framework 中,修改实体对象的属性,然后调用SaveChanges方法保存更改。

using (MyDbContext context = new MyDbContext())
{var product = context.Products.FirstOrDefault(p => p.Id == 1);if (product!= null){product.Price = 150.0m;context.SaveChanges();MessageBox.Show("数据更新成功!");}else{MessageBox.Show("未找到要更新的数据!");}
}

    使用 DbSet 的 Attach 和 Entry 方法更新:对于从其他地方获取的实体对象,可以使用Attach方法将其附加到上下文,然后使用Entry方法标记属性的更改状态。

using (MyDbContext context = new MyDbContext())
{var product = new Product { Id = 1, Name = "Product Name", Price = 150.0m };context.Products.Attach(product);context.Entry(product).Property(p => p.Price).IsModified = true;context.SaveChanges();
}

4.3 使用 Dapper 进行数据更新

    Dapper 通过Execute方法执行 SQL 更新语句。

using Dapper;
using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{string updateQuery = "UPDATE Products SET Price = @NewPrice WHERE Id = @Id";int rowsAffected = connection.Execute(updateQuery, new { NewPrice = 150.0m, Id = 1 });if (rowsAffected > 0){MessageBox.Show("数据更新成功!");}else{MessageBox.Show("数据更新失败!");}
}

五、数据绑定与显示

5.1 将查询结果绑定到 WPF 控件

    在 WPF 中,可以将数据库查询结果绑定到各种控件,如ListView、DataGrid等。

    使用 ListView 显示数据:首先创建一个包含数据的集合,然后将其绑定到ListView的ItemsSource属性。

<ListView x:Name="ProductListView"><ListView.View><GridView><GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}"/><GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/><GridViewColumn Header="Price" DisplayMemberBinding="{Binding Price}"/></GridView></ListView.View>
</ListView>using (MyDbContext context = new MyDbContext())
{var products = context.Products.ToList();ProductListView.ItemsSource = products;
}

使用 DataGrid 显示数据:DataGrid提供了更丰富的数据展示和编辑功能。

<DataGrid x:Name="ProductDataGrid" AutoGenerateColumns="True"/>using (MyDbContext context = new MyDbContext())
{var products = context.Products.ToList();ProductDataGrid.ItemsSource = products;
}

5.2 实现数据的实时更新显示

    当数据库中的数据发生变化时,为了在 WPF 界面上实时显示更新,可以使用ObservableCollection结合数据绑定。ObservableCollection是一个动态数据集合,当集合中的元素发生变化时,会自动通知绑定的 UI 元素进行更新。

public class ProductViewModel : INotifyPropertyChanged
{private ObservableCollection<Product> _products;public ObservableCollection<Product> Products{get { return _products; }set{_products = value;OnPropertyChanged(nameof(Products));}}public ProductViewModel(){LoadProducts();}private void LoadProducts(){using (MyDbContext context = new MyDbContext()){Products = new ObservableCollection<Product>(context.Products.ToList());}}public event PropertyChangedEventHandler PropertyChanged;protected virtual void OnPropertyChanged(string propertyName){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}
}

    在 XAML 中绑定:

<Window.DataContext><local:ProductViewModel/>
</Window.DataContext>
<DataGrid x:Name="ProductDataGrid" ItemsSource="{Binding Products}"/>

    当数据更新后,重新加载数据并更新ObservableCollection,界面会自动刷新显示最新数据。

六、错误处理与事务

6.1 错误处理

    在与数据库交互过程中,可能会出现各种错误,如连接失败、查询语法错误、数据更新冲突等。合理的错误处理可以提高应用程序的稳定性和用户体验。

    使用 try - catch 块捕获异常:在执行数据库操作时,使用try - catch块捕获可能出现的异常,并进行相应的处理。

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{try{string query = "SELECT * FROM Products";using (SqlCommand command = new SqlCommand(query, connection)){connection.Open();using (SqlDataReader reader = command.ExecuteReader()){while (reader.Read()){// 处理数据}}}}catch (SqlException ex){MessageBox.Show("数据库操作错误:" + ex.Message);}catch (Exception ex){MessageBox.Show("其他错误:" + ex.Message);}
}

    记录错误日志:将错误信息记录到日志文件中,以便后续分析和排查问题。可以使用第三方日志库,如 Log4Net。

using log4net;
using System.Data.SqlClient;private static readonly ILog log = LogManager.GetLogger(typeof(YourClassName));string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{try{// 数据库操作}catch (SqlException ex){log.Error("数据库操作错误", ex);MessageBox.Show("数据库操作错误:" + ex.Message);}catch (Exception ex){log.Error("其他错误", ex);MessageBox.Show("其他错误:" + ex.Message);}
}

6.2 事务处理

    事务是一组数据库操作的集合,这些操作要么全部成功执行,要么全部回滚。在 WPF 与数据库交互中,事务处理尤为重要,特别是在涉及多个相互关联的数据更新操作时,它能确保数据的完整性和一致性。例如,在一个银行转账操作中,需要同时从转出账户扣除金额并向转入账户增加金额,这两个操作必须作为一个事务来处理,否则可能导致数据不一致,出现金额丢失或错误增加的情况。

1. 使用ADO.NET处理事务

    在ADO.NET中,可以通过SqlTransaction类来管理事务。以下是一个使用ADO.NET进行事务处理的示例,假设我们要在数据库中插入一条新的产品记录,同时更新另一条相关记录的状态:

using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{connection.Open();SqlTransaction transaction = connection.BeginTransaction();try{string insertQuery = "INSERT INTO Products (Name, Price) VALUES (@Name, @Price)";using (SqlCommand insertCommand = new SqlCommand(insertQuery, connection, transaction)){insertCommand.Parameters.AddWithValue("@Name", "New Product");insertCommand.Parameters.AddWithValue("@Price", 99.99m);insertCommand.ExecuteNonQuery();}string updateQuery = "UPDATE RelatedRecords SET Status = @Status WHERE ProductId = SCOPE_IDENTITY()";using (SqlCommand updateCommand = new SqlCommand(updateQuery, connection, transaction)){updateCommand.Parameters.AddWithValue("@Status", "Updated");updateCommand.ExecuteNonQuery();}transaction.Commit();MessageBox.Show("操作成功完成!");}catch (Exception ex){transaction.Rollback();MessageBox.Show("操作失败,已回滚:" + ex.Message);}
}

    在这个示例中,首先通过BeginTransaction方法开始一个事务,然后在事务中执行插入和更新操作。如果所有操作都成功,调用Commit方法提交事务;如果在任何一个操作中出现异常,catch块会捕获异常并调用Rollback方法回滚事务,从而确保数据库的一致性。

2. 使用 Entity Framework 处理事务

    在 Entity Framework 中,事务管理相对简洁,因为DbContextSaveChanges方法默认是原子操作,即要么所有更改都保存到数据库,要么都不保存。然而,当需要在多个SaveChanges调用之间进行事务处理时,可以使用TransactionScope类。以下是一个示例:

using System.Transactions;
using (TransactionScope scope = new TransactionScope())
{using (MyDbContext context = new MyDbContext()){var newProduct = new Product { Name = "New Product", Price = 99.99m };context.Products.Add(newProduct);context.SaveChanges();var relatedRecord = context.RelatedRecords.FirstOrDefault(r => r.ProductId == newProduct.Id);if (relatedRecord!= null){relatedRecord.Status = "Updated";context.SaveChanges();}}scope.Complete();
}

    在这个示例中,TransactionScope会自动管理事务的开始、提交和回滚。在TransactionScope块内的所有DbContext操作都属于同一个事务。如果所有操作成功完成,调用scope.Complete()方法提交事务;如果出现异常,事务会自动回滚。

3. 使用 Dapper 处理事务
    Dapper 本身没有内置的事务管理类,但可以利用SqlTransaction来实现事务处理。示例如下:

using Dapper;
using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{connection.Open();SqlTransaction transaction = connection.BeginTransaction();try{string insertQuery = "INSERT INTO Products (Name, Price) VALUES (@Name, @Price)";connection.Execute(insertQuery, new { Name = "New Product", Price = 99.99m }, transaction);string updateQuery = "UPDATE RelatedRecords SET Status = @Status WHERE ProductId = SCOPE_IDENTITY()";connection.Execute(updateQuery, new { Status = "Updated" }, transaction);transaction.Commit();MessageBox.Show("操作成功完成!");}catch (Exception ex){transaction.Rollback();MessageBox.Show("操作失败,已回滚:" + ex.Message);}
}

    这里通过BeginTransaction开始事务,在Execute方法中传入transaction参数,确保所有操作都在同一个事务中执行,最后根据操作结果决定是提交还是回滚事务。

七、总结

    通过本文的详细阐述,我们全面了解了 WPF 与数据库交互的关键技术,涵盖从数据库连接、数据查询、数据更新到数据绑定显示,以及错误处理和事务管理等各个方面。不同的数据访问技术,如ADO.NET、Entity Framework 和 Dapper,为开发者提供了多样化的选择,每种技术都有其独特的优势和适用场景。在实际开发中,应根据项目的具体需求,选择合适的技术和方法来实现高效、稳定的数据库交互功能。随着技术的不断发展,WPF 与数据库交互的方式也将不断演进,开发者需要持续关注新技术、新特性,以提升应用程序的数据处理能力和用户体验。掌握这些知识和技能,将为构建功能强大、数据驱动的 WPF 应用程序奠定坚实的基础。

结束语

        展望未来,WPF 布局系统依然有着广阔的发展前景。随着硬件技术的不断革新,如高分辨率屏幕、折叠屏设备的日益普及,WPF 布局系统有望进一步强化其自适应能力,为用户带来更加流畅、一致的体验。在应对高分辨率屏幕时,能够更加智能地缩放和布局元素,确保文字清晰可读、图像不失真;对于折叠屏设备,可动态调整布局结构,充分利用多屏空间,实现无缝切换。

        性能优化方面,微软及广大开发者社区将持续努力,进一步降低复杂布局的计算开销,提高布局更新的效率,使得 WPF 应用在处理大规模数据、动态界面时依然能够保持高效响应。通过改进算法、优化内存管理等手段,让 WPF 布局系统在性能上更上一层楼。

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/145470241(防止抄袭,原文地址不可删除)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ESP32S3接入讯飞在线语音识别】

【ESP32S3接入讯飞在线语音识别】 1. 前言1.1 步骤概括1.2 硬件介绍1.3 接线2. 操作流程2.1 创建语音识别应用2.2 记录API秘钥3. JSON语音接入api3.1 JSON格式3.2 交互流程3.2 ESP32S3 Sense接入代码1. 核心功能2. 主要模块3. 工作流程4. 典型应用场景5. 关键技术点6. 待完善功…

学生管理前端

文章目录 首页student.html查询功能 首页 SpringBoot前端html页面放在static文件夹下&#xff1a;/src/main/resources/static 默认首页为index.html&#xff0c;我们可以用两个超链接或者两个button跳转到对应的页面。这里只是单纯的跳转页面&#xff0c;不需要提交表单等其…

(动态规划 最长递增的子序列)leetcode 300

这道题我第一眼反应就是暴力&#xff0c;但是暴力的话就是n*n-1*n-2*...n-(n-1) 也就是O(n^n)dfs做绝对超时 贪心也不行&#xff0c;这里是子序列&#xff0c;要考虑在ni的范围内考虑多种路线取最优&#xff0c;所以用动态规划 如何用动态规划呢&#xff1f; 答&#xff1a;…

Ubuntu 安装 Nginx并配置反向代理

Ubuntu版本&#xff1a;Ubuntu 24.04.2 LTS 一、安装Nginx ​更新系统软件包​ 安装前需确保系统处于最新状态&#xff0c;避免依赖冲突 sudo apt update && sudo apt upgrade -y ​安装Nginx主程序​ Ubuntu官方仓库已包含稳定版Nginx&#xff0c;直接安装即可 sudo…

Solr中得Core和Collection的作用和关系

Solr中得Core和Collection的作用和关系 一&#xff0c; 总结 在Apache Solr中&#xff0c;Core和Collection 是两个核心概念&#xff0c;他们分别用于单机模式和分布式模式&#xff08;SolrCloud&#xff09;中&#xff0c;用于管理和组织数据。 二&#xff0c;Core 定义&am…

yolov8,yolo11,yolo12 服务器训练到部署全流程 笔记

正在进行中&#xff0c;随时更新 一. Anaconda配置 1.安装anaconda (1)下载.sh文件 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror (2)scp到服务器后&#xff0c;运行安装包 bash Anaconda3-2020.07-Linux-x86_64.sh (3)安装anacond…

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…

25年前端如何走的更稳

2025年&#xff0c;随着deepseek引起的AI大模型技术的深度革命&#xff0c;带来了很多机会和挑战&#xff0c;前端程序员作为互联网里一个普通但必不可少的岗位&#xff0c;在当前形势下&#xff0c;需要主动变革才能走的更稳。本文简单介绍三个方向&#xff0c;Web3前端、全栈…

市场加速下跌,但监管「坚冰」正在消融

作者&#xff1a;Techub 热点速递 撰文&#xff1a;Yangz&#xff0c;Techub News 与近日气温逐步回暖不同&#xff0c;自 2 月 25 日比特币跌破 9 万美元以来&#xff0c;加密货币市场行情一路下滑。今日 10 时 50 分左右&#xff0c;比特币更是跌破 8 万美元大关&#xff0c…

【Android】安卓付款密码输入框、支付密码输入框

如图 代码部分&#xff1a; public class PayPasswordDialog extends AppCompatDialogFragment {private String mPayPass "";private String mTitle, mMoney;private final TextView[] mPayPassTextViewArray new TextView[6];private List<Integer> mPayP…

Java数据结构_一篇文章了解常用排序_8.1

本文所有排序举例均默认为升序排列。 目录 1. 常见的排序算法 2. 常见排序算法的实现 2.1 插入排序 2.1.1 基本思想&#xff1a; 2.1.2 直接插入排序 2.1.3 希尔排序&#xff08;缩小增量排序&#xff09; 2.2 选择排序 2.2.1 基本思想&#xff1a; 2.2.2 直接选择排…

计算机毕业设计SpringBoot+Vue.js人口老龄化社区服务与管理平台 (源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Vue学习教程-18Vue单文件组件

文章目录 前言一、单文件组件的构成二、组件引用三、组件的应用举例1.组件实例2.显示结果 前言 Vue 单文件组件&#xff08;又名 *.vue 文件&#xff0c;缩写为 SFC&#xff09;是一种特殊的文件格式&#xff0c;它允许将 Vue 组件的模板、逻辑 与 样式封装在单个文件中。组件…

掌握 findIndex、push 和 splice:打造微信小程序的灵活图片上传功能✨

文章目录 ✨ 掌握 findIndex、push 和 splice&#xff1a;打造微信小程序的灵活图片上传功能 &#x1f31f;示例场景&#xff1a;小程序图片上传&#x1f33c; 认识 findIndex定义语法在代码中的应用示例当前行为 &#x1f680; 认识 push定义语法在代码中的应用示例特点 ✂️ …

微服务即时通信系统---(七)文件管理子服务

目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程 服务代码实现 封装文件操作模块(utils.hpp) 获取唯一标识ID 文件读操作 文件写操作 编写proto文件 文件元信息 文件管理proto 单文件上传 多文件上传 单文件下载 多文件下载 RPC调用 服务端创建子…

ES的简单讲解

功能 &#xff1a; 文档存储 与 文档搜索 特点&#xff1a;比如有一个文档名 “你好” 可以用‘你‘&#xff0c;好&#xff0c;你好都可以搜索到这个文档 ES核心概念 类似于数据库中表的概念&#xff0c;在表的概念下又对数据集合进行了细分 ​ ES_Client查询接口 cpr::R…

宝塔安装向量数据库-Milvus

注&#xff1a;宝塔需要安装好docker容器组件&#xff01; 1、纯血宝塔安装 1.1 在线上镜像中&#xff0c;拉取milvus镜像&#xff0c;创建milvus容器 1.2 安装milvus管理工具ATTU&#xff1b;同样方式拉取线上镜像创建attu容器 2、自定义安装 2.1修改配置 {"registry-…

【K8S】Kubernetes 基本架构、节点类型及运行流程详解(附架构图及流程图)

Kubernetes 架构 k8s 集群 多个 master node 多个 work nodeMaster 节点&#xff08;主节点&#xff09;&#xff1a;负责集群的管理任务&#xff0c;包括调度容器、维护集群状态、监控集群、管理服务发现等。Worker 节点&#xff08;工作节点&#xff09;&#xff1a;实际运…

数据库MySQL,在终端输入后,提示不是内部命令等

【解决问题】mysql提示不是内部或外部命令&#xff0c;也不是可运行的程序 一般这种问题是因为没有在系统变量里面添加MySQL的可执行路径 以下是添加可执行路径的方法&#xff1a; 第一步&#xff1a;winR输入services.msc 然后找到MySQL&#xff0c;右击属性并复制MySQL的可执…

PhotoShop学习01

了解Photoshop 这里省略了Photoshop的软件安装&#xff0c;请自行查找资源下载。 1.打开图片 下图为启动photoshop后出现的界面&#xff0c;我们可以通过创建新文件或打开已有文件来启用photoshop的工作界面。 可以通过左边的按钮进行新文件的创建或打开已有文件。 也可以点…