以下是使用 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 程序对数据库的增删改查管理角色数据!
机器视觉缺陷检测算法开发
一、 明确需求与定义问题 1、检测对象是什么? 明确是哪种产品(PCB板、织物、玻璃、金属件、塑料件 […]
图像采集上位机系统开发
一、核心概念 二、关键组成部分 三、开发流程建议 四、技术选型建议(常见组合) 深圳市由你创科技有限公司是一家 […]
工控采集板卡定制开发
一、 明确需求 信号类型与数量: 性能指标: 环境要求: 机械与电气接口: 软件与驱动: 可靠性与维护: 成本 […]
下位机开发公司哪家好?
在工业自动化、智能设备、物联网终端等领域的核心战场,下位机如同设备的“大脑”,其性能与稳定性直接决定了整个系统 […]
Unity+nodejs简单实现webscoket聊天室
一、前言 在这个互联网时代,几乎每个人都有微信或QQ这类实时通讯工具,现在很多网络游戏也带有实时聊天功能,那这 […]
AI驱动的机器视觉技术
工业视觉算法,AI视觉模型这些都是老生常谈了,本期要讲的是升级版. 自进化检测系统. 目前 […]
机械臂路线规划系统开发
项目介绍: 该项目主要通过机械臂末端搭载双目相机扫描环境,实时构建障碍物点云地图通过红外结构光扫描面部生成密集 […]
无线路由器上位机开发
项目介绍 为满足智能工厂中对生产数据实时远程监测的需求,由你创为客户开发了一套无线路由器上位机软件。该项目采用 […]
血液检测管理系统软件定制开发
项目介绍 该项目是为 某医院开发的血液检测管理系统:以样本唯一码为线索,贯通接收、分拣、前处理、上机、审核、报 […]
分析仪控制采集分析软件开发
项目介绍 该项目是跨厂商、跨接口的通用仪器控制与数据平台,集连接管理、实时/触发/定时/条件采集、元数据绑定、 […]
开源鸿蒙适配器KHP-系列硬件设备产测功能开发
案例背景 开源鸿蒙适配器KHP-系列的硬件设备的产测功能开发。实现了KHP-IC500设备在出厂前测试硬件功能 […]
产品缺陷智能拍照检测分析控制系统管理软件定制开发
案例背景 系统在接受到传感器信号后,根据相机配置信息,调用相应机位的相机进行拍照。系统获取照片后调用,单图判定 […]
联系电话:
电子邮箱:unczzb@unicrom.cn
深圳研发中心(总部): 深圳市龙华区港深国际中心十楼E区
太原研发中心: 山西省太原市万迎泽西大街120号时代天峰1918室
上海办事处: 上海市浦东新区牡丹路60号,东辰大厦7楼702室
扫一扫,关注由你创科技