WinForms连接数据库展示数据的核心是ADO.NET三步法:配置连接字符串、用SqlDataAdapter填充DataTable、绑定到控件;推荐使用BindingSource提升灵活性,查询单条数据宜用SqlCommand配合参数化防止注入。

WinForms 连接数据库并展示数据,核心是用 A DO.NET(如 SqlConnection、SqlDataAdapter、DataTable)获取数据,再绑定到控件(如 DataGridView、ListBox)。不依赖第三方 ORM 也能快速实现,关键是把连接、查询、绑定三步理清楚。
连接字符串告诉程序怎么找到数据库。SQL
Server 常见写法如下(以本地 SQL Server Express 为例):
Server=.;Database=MyAppDB;Trusted_Connection=True;
或带账号密码:
Server=192.168.1.100;Database=MyAppDB;User Id=sa;Password=123456;
建议放在 app.config 的 <connectionstrings></connectionstrings> 节里,方便修改和复用:
<connectionStrings> <add name="MainConn" connectionString="Server=.;Database=MyAppDB;Trusted_Connection=True;" /> </connectionStrings>
代码中用 ConfigurationManager.ConnectionStrings["MainConn"].ConnectionString 读取。
这是最常用、最轻量的数据展示方式,适合增删改查基础操作。
SqlConnection,传入连接字符串SqlDataAdapter,传入 SQL 查询语句和连接对象Fill() 方法把结果装进 DataTable
DataTable 直接赋给 DataGridView.DataSource
示例代码(放在窗体的 Load 事件里):
private void Form1_Load(object sender, EventArgs e)
{
string connStr = ConfigurationManager.ConnectionStrings["MainConn"].ConnectionString;
string sql = "SELECT Id, Name, Age FROM Users";
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
dataGridView1.DataSource = dt;
}
}
注意:不用手动调用 conn.Open(),SqlDataAdapter.Fill() 会自动处理打开/关闭连接。
android rtsp流媒体播放介绍 中文WORD版
本文档主要讲述的是android rtsp流媒体播放介绍;实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
1
查看详情
如果后续要支持排序、筛选、新增行、同步编辑,推荐包一层 BindingSource:
AllowNew = true 后,DataGridView 可直接添加新行EndEdit() 和 ResetBindings() 可刷新状态绑定方式只需多一步:
bindingSource1.DataSource = dt; dataGridView1.DataSource = bindingSource1;
之后新增、删除、修改都通过 bindingSource1 操作,最后用 SqlDataAdapter.Update() 回写数据库(需提前设置 InsertCommand 等)。
如果只是查一条记录显示在文本框里,用 SqlCommand.ExecuteScalar() 或 ExecuteReader() 更高效:
string sql = "SELECT Name FROM Users WHERE Id = @id";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@id", 123);
conn.Open();
object result = cmd.ExecuteScalar(); // 返回第一行第一列
if (result != null) textBox1.Text = result.ToString();
}
注意参数化查询防 SQL 注入,别拼接字符串。
基本上就这些。WinForms 数据展示不复杂但容易忽略连接释放、异常处理和 UI 线程安全(大数据量时别在 UI 线程里长时间查库)。先跑通上面任一方式,再按需加事务、分页或异步加载。
以上就是WinForms怎么连接数据库 WinForms实现数据展示方法的详细内容,更多请关注其它相关文章!
相关文章:
qq游戏跨平台入口_qq游戏多设备同步登录
b站怎么删除评论_b站评论管理与删除操作
CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析
优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率
Lar*el拼写容错搜索策略:基于语音编码的优化实践
AO3最新镜像入口 Archive of Our Own官方平台访问
提升Kafka消费者健壮性:会话超时处理与消息处理语义
纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
Node.js中HTML按钮与J*aScript函数交互的正确姿势
Lar*el 递归关系中排除指定分支的教程
抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
word中如何让数字纵向排列_Word数字纵向排列方法
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
如何在Python中使用Optional类型处理可变对象并避免Pylint警告
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
J*a如何实现并发下载文件_J*a多线程IO性能优化案例
c++如何使用Meson构建系统_c++比CMake更快的构建工具
最新韩小圈网页版登录入口_官网在线观看官方链接
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略
天猫2025双十一0点秒杀攻略 天猫爆款抢购时间
J*a应用集成GitHub CLI与API认证指南
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
优化Log4j2控制台输出性能:解决异步日志瓶颈
J*a应用程序首次运行自动创建文件与目录的最佳实践
德邦快递查询平台 德邦快递物流信息查询入口
PHP文件上传至S3:策略、考量与避免本地存储的挑战
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
蛙漫移动版在线看 蛙漫手机浏览器直达入口
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
Go语言中JSON数据解码与字段访问指南
J*aScript设计模式实践_j*ascript代码优化
Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
LINUX怎么安装MySQL_LINUX数据库安装配置教程
cad如何更改注释性对象的比例_cad注释性比例调整方法