以下是使用 Visual Studio WPF 项目来连接数据库操作人物角色数据的完整教程,使用 SQLite 和 MySQL 两种数据库的实现方案。你可以选择其中一种,根据你的需求实施。
.NET 框架
开发功能。.NET 6
或 .NET Framework
)。创建一个 SQLite 数据库文件(如 genshin.db
),并用工具或代码创建表 Characters
。
SQL 示例:
CREATE TABLE Characters (
Id INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255) NOT NULL,
Element VARCHAR(255) NOT NULL,
Rarity INT NOT NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
在 MainWindow.xaml
中设计界面,允许用户输入角色数据并执行增删改查操作。
<Window x:Class="GenshinDatabaseApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="角色管理" Height="450" Width="800">
<Grid Margin="10">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center">
<TextBox x:Name="NameBox" Width="200" PlaceholderText="角色名" Margin="5"/>
<TextBox x:Name="ElementBox" Width="200" PlaceholderText="元素" Margin="5"/>
<TextBox x:Name="RarityBox" Width="200" PlaceholderText="稀有度 (1-5)" Margin="5"/>
<Button Content="添加角色" Width="200" Click="AddCharacter_Click" Margin="5"/>
<Button Content="更新角色" Width="200" Click="UpdateCharacter_Click" Margin="5"/>
<Button Content="删除角色" Width="200" Click="DeleteCharacter_Click" Margin="5"/>
<Button Content="查询角色" Width="200" Click="SearchCharacter_Click" Margin="5"/>
</StackPanel>
<DataGrid x:Name="CharacterGrid" AutoGenerateColumns="True" Margin="10,200,10,10" />
</Grid>
</Window>
在 MainWindow.xaml.cs
中实现增删改查逻辑。
using System;
using System.Collections.ObjectModel;
using System.Data.SQLite;
using System.Windows;
namespace GenshinDatabaseApp
{
public partial class MainWindow : Window
{
private string connectionString = "Data Source=genshin.db";
public ObservableCollection<Character> Characters { get; set; }
public MainWindow()
{
InitializeComponent();
Characters = new ObservableCollection<Character>();
CharacterGrid.ItemsSource = Characters;
LoadCharacters();
}
private void LoadCharacters()
{
Characters.Clear();
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM Characters";
using (var command = new SQLiteCommand(query, connection))
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Characters.Add(new Character
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Element = reader.GetString(2),
Rarity = reader.GetInt32(3)
});
}
}
}
}
private void AddCharacter_Click(object sender, RoutedEventArgs e)
{
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
string query = "INSERT INTO Characters (Name, Element, Rarity) VALUES (@Name, @Element, @Rarity)";
using (var command = new SQLiteCommand(query, connection))
{
command.Parameters.AddWithValue("@Name", NameBox.Text);
command.Parameters.AddWithValue("@Element", ElementBox.Text);
command.Parameters.AddWithValue("@Rarity", int.Parse(RarityBox.Text));
command.ExecuteNonQuery();
}
}
LoadCharacters();
}
private void UpdateCharacter_Click(object sender, RoutedEventArgs e)
{
if (CharacterGrid.SelectedItem is Character selectedCharacter)
{
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
string query = "UPDATE Characters SET Name=@Name, Element=@Element, Rarity=@Rarity WHERE Id=@Id";
using (var command = new SQLiteCommand(query, connection))
{
command.Parameters.AddWithValue("@Name", NameBox.Text);
command.Parameters.AddWithValue("@Element", ElementBox.Text);
command.Parameters.AddWithValue("@Rarity", int.Parse(RarityBox.Text));
command.Parameters.AddWithValue("@Id", selectedCharacter.Id);
command.ExecuteNonQuery();
}
}
LoadCharacters();
}
}
private void DeleteCharacter_Click(object sender, RoutedEventArgs e)
{
if (CharacterGrid.SelectedItem is Character selectedCharacter)
{
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
string query = "DELETE FROM Characters WHERE Id=@Id";
using (var command = new SQLiteCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", selectedCharacter.Id);
command.ExecuteNonQuery();
}
}
LoadCharacters();
}
}
private void SearchCharacter_Click(object sender, RoutedEventArgs e)
{
Characters.Clear();
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM Characters WHERE Name LIKE @Name";
using (var command = new SQLiteCommand(query, connection))
{
command.Parameters.AddWithValue("@Name", $"%{NameBox.Text}%");
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Characters.Add(new Character
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Element = reader.GetString(2),
Rarity = reader.GetInt32(3)
});
}
}
}
}
}
}
public class Character
{
public int Id { get; set; }
public string Name { get; set; }
public string Element { get; set; }
public int Rarity { get; set; }
}
}
genshin.db
文件存在于项目根目录中,并已包含 Characters
表。如果需要使用 MySQL,将 SQLiteConnection
替换为 MySqlConnection
,并调整连接字符串为:
string connectionString = "Server=your_server;Database=genshin.sql;User=your_user;Password=your_password;";
其余逻辑与 SQLite 类似。
utf8mb4
utf8mb4
是 MySQL 8.0 推荐的字符集,它支持 Unicode 完整字符集,包括多字节字符和表情符号(Emoji)。utf8mb4_general_ci
utf8mb4_unicode_ci
utf8mb4_general_ci
。utf8mb4_bin
CREATE DATABASE genshin_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
utf8mb4_general_ci
:
utf8mb4_unicode_ci
:
utf8mb4_general_ci
。utf8mb4_bin
:
希望这篇文章能帮助你快速上手开发,顺利实现 WPF 程序对数据库的增删改查管理角色数据!
fpga锁相板卡定制开发解决方案
一、 核心概念:什么是FPGA锁相板卡? 锁相技术(Lock-in Amplification)的核心是从强噪 […]
Keras深度学习:从“Hello World”到“我模型跑起来了!”的奇幻(秃头)之旅
朋友们,听说你想玩深度学习?不想从底层CUDA开始撸矩阵乘法,也不想被PyTorch的动态图绕晕?恭喜你,Ke […]
用 PyTorch 实现一个简单的神经网络:从数据到预测
PyTorch 是目前最流行的深度学习框架之一,以其灵活性和易用性受到开发者的喜爱。本文将带你从零开始,用 P […]
脉冲控制程序开发
一、脉冲控制程序的典型应用场景 应用类型 控制对象 脉冲作用 步进电机控制 电机转动/定位 每个脉冲对应一个步 […]
电机控制MATLAB仿真软件开发
一、 核心仿真模块构建 1. 电机本体建模 matlab % PMSM dq轴数学模型示例 (状态空 […]
使用Vue和Web Worker实现TCP消息监听并实时更新图表
在现代Web应用中,实时数据可视化是一个常见的需求。本文将介绍如何在Vue应用中结合Web Worker来监听 […]
仪器设备远端控制系统开发
核心实现色谱设备云端协同操控与数据全生命周期管理。系统采用分层架构设计:
机械臂路线规划系统开发
项目介绍: 该项目主要通过机械臂末端搭载双目相机扫描环境,实时构建障碍物点云地图通过红外结构光扫描面部生成密集 […]
无线路由器上位机开发
项目介绍 为满足智能工厂中对生产数据实时远程监测的需求,由你创为客户开发了一套无线路由器上位机软件。该项目采用 […]
血液检测管理系统软件定制开发
项目介绍 该项目是为 某医院开发的血液检测管理系统:以样本唯一码为线索,贯通接收、分拣、前处理、上机、审核、报 […]
分析仪控制采集分析软件开发
项目介绍 该项目是跨厂商、跨接口的通用仪器控制与数据平台,集连接管理、实时/触发/定时/条件采集、元数据绑定、 […]
开源鸿蒙适配器KHP-系列硬件设备产测功能开发
案例背景 开源鸿蒙适配器KHP-系列的硬件设备的产测功能开发。实现了KHP-IC500设备在出厂前测试硬件功能 […]
联系电话:
电子邮箱:unczzb@unicrom.cn
深圳研发中心(总部): 深圳市龙华区港深国际中心十楼E区
太原研发中心: 山西省太原市万迎泽西大街120号时代天峰1918室
上海办事处: 上海市浦东新区牡丹路60号,东辰大厦7楼702室
扫一扫,关注由你创科技