资讯动态

C#与SQL Server开发实用命令大全与最佳实践

发布时间:2026/10/15 14:30:01 来源:尧图企业网站定制
1. 项目概述作为一名有10年.NET开发经验的工程师我经常遇到新手开发者对C#和SQL Server的基础操作感到困惑。这个常用命令大全项目就是把我多年来积累的实用代码片段和数据库操作命令整理成一份清晰易懂的参考手册。不同于官方文档的复杂晦涩这份指南特别注重真实开发场景中的高频需求每个命令的典型应用场景新手容易踩坑的注意事项配套的简明示例代码2. 开发环境准备2.1 基础工具安装首先确保你的开发环境已经配置好Visual Studio 2022社区版即可SQL Server Express免费版本SQL Server Management Studio (SSMS)提示安装时建议选择.NET桌面开发和数据存储和处理工作负载2.2 测试数据库创建-- 创建测试数据库 CREATE DATABASE TestDB; GO USE TestDB; GO -- 创建示例表 CREATE TABLE Users ( UserID INT PRIMARY KEY IDENTITY(1,1), UserName NVARCHAR(50) NOT NULL, Email NVARCHAR(100) UNIQUE, CreatedDate DATETIME DEFAULT GETDATE() );3. C#基础操作命令3.1 数据库连接管理using System.Data.SqlClient; // 连接字符串配置实际项目应该放在配置文件中 string connectionString Serverlocalhost;DatabaseTestDB;Integrated SecurityTrue;; // 最佳实践使用using自动释放资源 using (SqlConnection connection new SqlConnection(connectionString)) { try { connection.Open(); // 执行数据库操作... } catch (SqlException ex) { Console.WriteLine($数据库错误: {ex.Message}); } }3.2 参数化查询防SQL注入string sql INSERT INTO Users (UserName, Email) VALUES (name, email); using (SqlCommand command new SqlCommand(sql, connection)) { command.Parameters.AddWithValue(name, 张三); command.Parameters.AddWithValue(email, zhangsanexample.com); int rowsAffected command.ExecuteNonQuery(); Console.WriteLine($插入了 {rowsAffected} 行数据); }4. SQL Server实用命令4.1 数据查询优化-- 基础查询 SELECT * FROM Users WHERE UserName LIKE 张%; -- 添加索引提高查询性能 CREATE INDEX IX_Users_UserName ON Users(UserName); -- 查看查询执行计划优化必备 SET SHOWPLAN_TEXT ON; GO SELECT * FROM Users WHERE Email LIKE %example%; GO SET SHOWPLAN_TEXT OFF;4.2 事务处理示例using (SqlTransaction transaction connection.BeginTransaction()) { try { // 执行多个操作 SqlCommand cmd1 new SqlCommand(UPDATE Accounts SET Balance Balance - 100 WHERE AccountID 1, connection, transaction); SqlCommand cmd2 new SqlCommand(UPDATE Accounts SET Balance Balance 100 WHERE AccountID 2, connection, transaction); cmd1.ExecuteNonQuery(); cmd2.ExecuteNonQuery(); transaction.Commit(); } catch { transaction.Rollback(); throw; } }5. 高级技巧与性能优化5.1 批量数据操作// 使用SqlBulkCopy高效导入数据 DataTable newUsers GetUserData(); // 假设这个方法返回要导入的数据 using (SqlBulkCopy bulkCopy new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName Users; bulkCopy.WriteToServer(newUsers); }5.2 存储过程调用-- 创建存储过程 CREATE PROCEDURE sp_GetUserByEmail Email NVARCHAR(100) AS BEGIN SELECT * FROM Users WHERE Email Email; END// C#调用存储过程 using (SqlCommand command new SqlCommand(sp_GetUserByEmail, connection)) { command.CommandType CommandType.StoredProcedure; command.Parameters.AddWithValue(Email, zhangsanexample.com); using (SqlDataReader reader command.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader[UserName]); } } }6. 常见问题排查6.1 连接问题错误无法打开登录请求的数据库检查连接字符串中的数据库名称确认SQL Server服务已启动检查防火墙设置错误:超时时间已到增加连接超时时间在连接字符串中添加Connect Timeout30检查网络延迟优化查询性能6.2 性能问题查询缓慢使用EXEC sp_helpindex 表名检查索引避免SELECT *只查询需要的列考虑添加适当的索引内存泄漏确保所有SqlConnection、SqlCommand对象都在using块中监控应用程序的内存使用情况7. 安全最佳实践7.1 连接字符串安全永远不要将连接字符串硬编码在代码中使用ConfigurationManager或.NET Core的IConfiguration考虑使用Windows身份验证而非SQL身份验证7.2 SQL注入防护始终使用参数化查询避免动态拼接SQL语句对用户输入进行验证和清理// 危险做法绝对避免 string sql SELECT * FROM Users WHERE UserName userInput ; // 安全做法 string sql SELECT * FROM Users WHERE UserName name; command.Parameters.AddWithValue(name, userInput);8. 实用扩展资源8.1 常用NuGet包Dapper轻量级ORMEntity Framework Core全功能ORMPolly弹性与瞬时故障处理8.2 学习资源推荐Microsoft Docs的C#和SQL Server文档Stack Overflow上的常见问题解答GitHub上的开源项目代码参考在实际开发中我发现很多问题其实都有现成的解决方案。关键是要建立自己的代码片段库并持续更新这份常用命令大全。当遇到新问题时及时将解决方案补充进来久而久之就会形成非常有价值的个人知识库。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑