asp.net连接查询SQL数据库并把结果显示在网页上
在ASP.NET中,利用C连接SQL数据库并使用SQL语句进行查询,对于初次接触C的我来说是一项挑战。经过两天的摸索,终于成功运行了两种连接方法。接下来,我将分享这两种方法,希望能对同样感兴趣的朋友们有所帮助。
首先是第一种方法,虽然代码看起来较为直接简单,但安全性相对较低。直接在Page_Load函数中加入以下代码即可使用:
```csharp
public void Page_Load(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa;Database=NorthWind"))
{
string username = "forever";
string strSQL = "select from table where name='" + username + "'"; // 注意此处应使用参数化查询以提高安全性
SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con);
DataSet ds = new DataSet();
adapter.Fill(ds);
foreach (DataRowView drv in ds.Tables[0].DefaultView)
{
Response.Write(drv["字段名"] + "|"); // 这里可以自定义字段名称进行输出
}
}
}
```
在此方法中,直接在代码中硬编码了数据库连接字符串,可能存在安全隐患。在实际开发中,不推荐使用这种方式。SQL查询语句中的字符串拼接也存在SQL注入的风险,应使用参数化查询以提高安全性。尽管此方法操作起来较为简单,但其安全性需要重点关注。在实际开发中建议采用更为安全的方式。
接下来是第二种方法,虽然相对更为安全,但操作起来稍显复杂。它涉及到Web.config配置文件的修改以及数据库连接的建立与查询函数的实现。具体代码如下:
在Web.config文件中添加连接字符串信息:
```xml
``` 接着在代码中获取配置信息并建立数据库连接:
```csharp
string sCon = ConfigurationManager.AppSettings["connect"];
if (string.IsNullOrEmpty(sCon))
{
Response.Write("连接字符串为空!");
}
SqlConnection con = new SqlConnection(sCon);
if (con.State == ConnectionState.Closed) con.Open();
执行数据库查询是应用程序中不可或缺的一环。在这段代码中,我们将执行一个针对特定表的SQL查询,并处理返回的结果。让我们一步步地深入了解这个过程。
我们构建一个SQL查询语句。这里的关键是识别中文字符,因此我们使用“N”前缀来指定字符串字面量是Unicode的。例如,我们的查询语句可能是这样的:
```sql
string s = "select from 表名 where id=N'" + id + "'";
```
接下来,我们准备执行这个查询。我们创建一个`SqlCommand`对象,设置连接字符串和命令文本,并指定命令类型为文本。如果有额外的参数需要添加到查询中,我们会遍历参数数组并将它们添加到命令对象中。
```csharp
SqlCommand cmd = new SqlCommand();
cmd.Connection = con; // 连接数据库
cmdmandText = s; // 设置SQL查询语句
cmdmandType = CommandType.Text; // 指定命令类型为文本
// 如果有查询参数,添加到命令中
if (Params != null) {
foreach (SqlParameter param in Params) {
if (param != null) cmd.Parameters.Add(param);
}
}
```
然后,我们尝试执行这个命令。如果执行标量返回(ExecuteScalar)的结果不为空,我们执行读取器(ExecuteReader)来获取查询结果。在这个过程中,我们捕获任何可能出现的SqlException异常,并处理它们。无论是否发生异常,都会释放命令对象占用的资源。
```csharp
try {
if (cmd.ExecuteScalar() != null) {
SqlDataReader dr = cmd.ExecuteReader();
// 保存查询结果到数据读取器中
select_result = dr;
}
} catch(SqlException se) {
// 处理Sql异常,记录错误信息或展示给用户
_objToShowErr = se;
_sError = se.Message;
return null; // 或进行适当的错误处理
} finally {
cmd.Dispose(); // 释放资源
}
```
一旦我们有了数据读取器`select_result`,我们就可以读取查询返回的每一行数据。这里是一个简单的例子,假设我们知道表有两个字段,我们可以这样处理数据:
```csharp
string ss = ""; // 用于构建结果字符串的变量
while (select_result.Read()) {
// 根据字段数量构建输出字符串,这里假设有两个字段为例
ss += "第一个字段:" + select_result[0] + ",第二个字段:" + select_result[1] + ";";
}
// 测试输出到页面或日志中,例如使用Response.Write(ss)在网页上显示结果。
Response.Write(ss);
```
使用`Cambrian.Render('body')`(假设这是某种模板渲染方法的调用),将处理后的数据呈现给用户。这个过程使得我们的应用程序能够流畅地执行数据库查询并展示结果。