【WPF学习笔记】之如何设置下拉框读取SqlServer数据库的值:动画系列之(一)
先前条件:设置好数据库,需要三个文件CommandInfo.cs、DbHelperSQL.cs、myHelper.cs,需要修改命名空间,参照之前随笔http://www.cnblogs.com/Owen-ET/p/5999654.html
添加一个表的类User_test对应数据库的表,如下图:
User_test类:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace User.sqlHelper { [Serializable] class User_test { public User_test() { } #region private int _userID; private string _userName; private int _userGrade; private string _userPassword; public int UserID { set { _userID = value; } get { return _userID; } } public string UserName { set { _userName = value;} get { return _userName; } } public int UserGrade { set { _userGrade = value; } get { return _userGrade; } } public string UserPassword { set { _userPassword = value;} get { return _userPassword; } } #endregion #region public User_test(int userID) { StringBuilder strSql = new StringBuilder(); strSql.Append("select UserID,UserName,UserGrade"); strSql.Append(" FROM [User] "); strSql.Append(" where UserID=@userID"); SqlParameter[] parameter = { new SqlParameter("@userID",SqlDbType.Int,4)}; parameter[0].Value = userID; DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameter); if( ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["UserID"] != null) { this.UserID = int.Parse(ds.Tables[0].Rows[0]["UserID"].ToString().Trim()); } if (ds.Tables[0].Rows[0]["UserName"] != null) { this.UserName = ds.Tables[0].Rows[0]["UserName"].ToString().Trim(); } if (ds.Tables[0].Rows[0]["UserGrade"] != null) { this.UserGrade = int.Parse(ds.Tables[0].Rows[0]["UserGrade"].ToString().Trim()); } if (ds.Tables[0].Rows[0]["UserPassword"] != null) { this.UserPassword = ds.Tables[0].Rows[0]["UserPassword"].ToString().Trim(); } } } //根据id得到名字 public string getUserName(int userid) { string name = ""; StringBuilder strSql = new StringBuilder(); strSql.Append("select UserName "); strSql.Append(" FROM [User] "); strSql.Append("where UserID=@userID"); SqlParameter[] parameter = { new SqlParameter("@userID",SqlDbType.Int,4)}; parameter[0].Value = userid; DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameter); if(ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["UserName"] != null) { name = ds.Tables[0].Rows[0]["UserName"].ToString().Trim(); } } return name; } //根据名字得到级别 public int getUserGrade(string username) { int grade = 1; StringBuilder strSql = new StringBuilder(); strSql.Append("select UserGrade "); strSql.Append(" FROM [User] "); strSql.Append(" where UserName=@userName"); SqlParameter[] parameter = { new SqlParameter("@userName", SqlDbType.VarChar,50)}; parameter[0].Value = username; DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameter); if(ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["UserGrade"] != null) { grade = int.Parse(ds.Tables[0].Rows[0]["UserGrade"].ToString().Trim()); } } return grade; } /// <summary> /// 增加一条数据 /// </summary> /// public int Add(string username) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into [User] ("); strSql.Append("UserName)"); strSql.Append(" values("); strSql.Append("@userName)"); SqlParameter[] parameter = { new SqlParameter("@userName",SqlDbType.VarChar,50)}; parameter[0].Value = username; object obj = DbHelperSQL.Query(strSql.ToString(), parameter); if (obj == null) { return 0; } else { return Convert.ToInt32(obj); } } /// <summary> /// 删除一条数据 /// </summary> public bool Delete(int userid) { StringBuilder strSql = new StringBuilder(); strSql.Append("delete from [User] "); strSql.Append(" where UserID=" + UserID.ToString()); int rows = DbHelperSQL.ExecuteSql(strSql.ToString()); if (rows > 0) { return true; } else { return false; } } /// <summary> /// 获得数据列表 /// </summary> /// public DataSet GetList() { StringBuilder strSql = new StringBuilder(); strSql.Append("select * "); strSql.Append("FROM [User]"); return DbHelperSQL.Query(strSql.ToString()); } #endregion } }
对应数据库:
然后在xaml中设置下拉框:
<UserControl x:Class="User.uc_login" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" Loaded="UserControl_Loaded" d:DesignHeight="1080" d:DesignWidth="1920"> <Canvas x:Name="c_login" Width="1920" Height="1080" Background="Azure"> <Canvas x:Name="c_log" Width="600" Height="600" Canvas.Left="680" Canvas.Top="100" Background="AntiqueWhite"> <Label Content="用户:" Width="122" Height="80" FontSize="35" Canvas.Left="100" Canvas.Top="105" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <ComboBox x:Name="cb_uploader" Width="200" Height="80" Canvas.Left="268" Canvas.Top="105" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35"/> <Label Content="密码:" Width="122" Height="80" FontSize="35" Canvas.Left="100" Canvas.Top="230" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <TextBox x:Name="tb_password" Width="200" Height="80" Canvas.Left="268" Canvas.Top="230" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35"/> <Button Content="登录" Width="120" Height="60" FontSize="32" Canvas.Left="100" Canvas.Top="360" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Click="btn_login_Click"/> <!--<Button Content="修改密码" Width="165" Height="60" FontSize="32" Canvas.Left="305" Canvas.Top="460" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />--> </Canvas> </Canvas> </UserControl>
注:上面代码xaml是用户控件代码。
最后,在后台代码设置:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using User.sqlHelper; using System.Data; namespace User { /// <summary> /// uc_login.xaml 的交互逻辑 /// </summary> public partial class uc_login : UserControl { public uc_login() { InitializeComponent(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { //获取下拉框用户名字 User_test _u = new User_test(); DataSet _ds = _u.GetList(); if(_ds != null) { DataTable _dt = _ds.Tables[0]; for (int i = 0; i < _dt.Rows.Count; i++) { string UserName = _dt.Rows[i]["UserName"].ToString().Trim(); ComboBoxItem cbitem = new ComboBoxItem(); cb_uploader.Items.Add(cbitem); cbitem.Content = UserName; } } } //登录按钮 private void btn_login_Click(object sender, RoutedEventArgs e) { //判断下拉框不为空 if (this.cb_uploader != null) { //判断密码不为空 if (this.tb_password != null) { string uploader = cb_uploader.Items. } //密码为空 else { } } //下拉框为空 else { } } } }
结果:
不积跬步,无以致千里;不集小流,无以成江海。
如转载本文,请还多关注一下我的博客:https://www.cnblogs.com/Owen-ET/;
我的Github地址:https://github.com/Owen-ET————————————
无善无恶心之体, 有善有恶意之动, 知善知恶是良知, 为善去恶是格物。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App