aspx连接sqlserver数据库
打开 Visual Studio,连接新建一个 ASP.NET Web 窗体项目,据库拖一个 GridView 到页面上,连接然后双击空白处进入代码后台——这时候你面对的据库,就是连接怎么让 C# 代码跟 SQL Server 说上话的问题。说穿了,据库ASPX 连接 SQL Server 就靠一个东西:连接字符串。连接剩下的据库全是围绕它做文章。
连接字符串长这样:
string connStr = "Server=localhost;Database=MyShop;User Id=sa;Password=yourpassword;"; 或者用 Windows 身份验证:
string connStr = "Server=localhost;Database=MyShop;Integrated Security=True;"; 我习惯把连接字符串塞进 Web.config 的连接 <connectionStrings> 节点里,而不是据库硬编码在 .cs 文件里。原因很简单——改密码的连接时候不用重新编译整个项目。Web.config 里写:
<connectionStrings> <add name="MyShopConn" connectionString="Server=localhost;Database=MyShop;Integrated Security=True;" providerName="System.Data.SqlClient" /> </connectionStrings> 代码里用 ConfigurationManager.ConnectionStrings["MyShopConn"].ConnectionString 取出来就行。据库这算是连接个基本素养,但很多人图省事直接写在代码里,据库上线之后改个数据库地址还得重新发布,连接挺折腾的。
拿到连接字符串,接下来就是 SqlConnection、SqlCommand、SqlDataReader 这一套。写个最简单的查询:
using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlCommand cmd = new SqlCommand("SELECT ProductName, Price FROM Products", conn); SqlDataReader reader = cmd.ExecuteReader(); GridView1.DataSource = reader; GridView1.DataBind(); } 注意那个 using——它确保连接用完就关。我见过太多人忘了关连接,跑几天 SQL Server 连接池就爆了,报“超时时间已到”的错。SqlConnection 实现 IDisposable,using 块结束自动 Dispose,比手动 conn.Close() 靠谱。
插入数据的时候别用字符串拼接。比如这种写法:
string sql = "INSERT INTO Users (Name) VALUES ('" + txtName.Text + "')"; 看着简单,但用户输入个 '); DROP TABLE Users; -- 你就哭吧。用参数化查询:
SqlCommand cmd = new SqlCommand("INSERT INTO Users (Name) VALUES (@Name)", conn); cmd.Parameters.AddWithValue("@Name", txtName.Text); cmd.ExecuteNonQuery(); 参数化不仅防 SQL 注入,还省去了处理单引号转义的麻烦。有人担心性能问题,说参数化查询会阻止 SQL Server 重用执行计划——实际上恰恰相反,参数化反而更容易让执行计划缓存命中。
还有个常见坑:连接字符串里写 Server=localhost 本地跑没问题,部署到服务器上如果 SQL Server 是命名实例,得写成 Server=localhost\SQLEXPRESS 这种格式。我上次帮人排查一个部署问题,折腾半天发现就是实例名没写对,报“找不到网络路径”的错误,跟连接字符串本身没关系。
如果你用的是 ASP.NET Core 或者较新的项目模板,可能更习惯用 Dapper 或者 Entity Framework。但底层还是这一套——ADO.NET 是根,ORM 只是包装。理解 SqlConnection 怎么工作,出了问题才知道从哪儿查。
GridView 绑定完数据,页面跑起来,看到表格里出现数据库里的记录,那一刻就算通了。剩下的无非是分页、排序、编辑这些花活,基础连接搞定了,后面都是体力活。
