赞
踩
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Data; //引用三个命名空间
- using System.Data.SqlClient;
- using System.Configuration;
-
- /// <summary>
- /// DB 的摘要说明
- /// </summary>
- public class DB
- {
- public DB()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
-
-
-
-
- /// <summary>
- /// 用于执行返回单个值的select语句
- /// </summary>
- /// <param name="sql">只返回单个值的select语句</param>
- /// <returns>查到的一个值,查询失败返回null</returns>
-
-
- // 定义一个公开的方法,该方法接受一个SQL查询字符串作为参数,并返回一个object类型的值。
- public object queryOneValue(string sql)
- {
- // 从Web.config文件中获取名为"myDBConnectionString"的数据库连接字符串。
- string connStr = ConfigurationManager.ConnectionStrings["myDBConnectionString"].ConnectionString;
-
- // 使用上面获取的连接字符串构造一个SqlConnection对象,用于与数据库建立连接。
- SqlConnection conn = new SqlConnection(connStr);
-
- try
- {
- // 打开数据库连接。
- conn.Open();
-
- // 使用提供的SQL查询字符串和已建立的数据库连接构造一个SqlCommand对象。
- SqlCommand comm = new SqlCommand(sql, conn);
-
- // 执行SqlCommand对象中的SQL命令,并返回查询结果中的第一行第一列的值(如果有的话)。
- // 这通常用于返回单个值,如COUNT(*)的结果或SELECT TOP 1 ...的结果。
- object ret = comm.ExecuteScalar();
-
- // 返回查询到的值(如果有的话)。
- return ret;
- }
- catch (Exception ex)
- {
- // 如果在执行过程中发生任何异常,捕获该异常并返回null。
- // 这里应该记录异常信息以便后续调查,但此示例中未显示。
- return null;
- }
- finally
- {
- // 无论是否发生异常,都会执行finally块中的代码。
- // 检查数据库连接是否仍然打开。
- if (conn.State == ConnectionState.Open)
- {
- // 如果连接是打开的,则关闭它。
- conn.Close();
- }
- }
- }
-
-
-
-
-
- // 定义一个公开的方法,该方法接受一个SQL命令字符串作为参数,并返回一个int类型的值。
- // 通常,这个返回值表示受影响的行数。
- public int ExecuteNonQueryCommand(string sql)
- {
- // 从Web.config文件中获取名为"myDBConnectionString"的数据库连接字符串。
- string connStr = ConfigurationManager.ConnectionStrings["myDBConnectionString"].ConnectionString;
-
- // 使用上面获取的连接字符串构造一个SqlConnection对象,用于与数据库建立连接。
- SqlConnection conn = new SqlConnection(connStr);
-
- try
- {
- // 打开数据库连接。
- conn.Open();
-
- // 使用提供的SQL命令字符串和已建立的数据库连接构造一个SqlCommand对象。
- SqlCommand comm = new SqlCommand(sql, conn);
-
- // 执行SqlCommand对象中的SQL命令,并返回受影响的行数。
- // 这通常用于执行INSERT、UPDATE、DELETE等不返回结果集的命令。
- int ret = comm.ExecuteNonQuery();
-
- // 返回受影响的行数。
- return ret;
- }
- catch (Exception ex)
- {
- // 如果在执行过程中发生任何异常,捕获该异常并返回一个特殊的值(-1)表示操作失败。
- // 这里应该记录异常信息以便后续调查,但此示例中未显示。
- return -1;
- }
- finally
- {
- // 无论是否发生异常,都会执行finally块中的代码。
- // 检查数据库连接是否仍然打开。
- if (conn.State == ConnectionState.Open)
- {
- // 如果连接是打开的,则关闭它。
- conn.Close();
- }
- }
- }
ExecuteScalar
时,你应确保SQL查询返回单个值(或没有值,这将返回null)。如果查询返回多行多列的数据,则 ExecuteScalar
将只返回第一行第一列的值,并忽略其他行和列。try-catch-finally
结构可以确保即使在发生异常的情况下,连接也能被正确关闭。这是一个很好的编程实践。"不返回结果集" 指的是执行 SQL 语句后,数据库不会返回一个可以逐行读取的数据集(如查询结果)。对于 SQL 语句,我们可以大致分为两类:返回结果集的语句和不返回结果集的语句。
返回结果集的语句
这类语句通常用于从数据库中检索数据,例如
SELECT
语句。当你执行一个SELECT
语句时,数据库会返回一个结果集,你可以遍历这个结果集来读取查询到的数据。不返回结果集的语句
这类语句通常用于修改数据库中的数据或结构,而不是检索数据。以下是一些不返回结果集的 SQL 语句的例子:
- 数据修改语句:
INSERT
:向表中插入新行。UPDATE
:更新表中的现有行。DELETE
:从表中删除行。- 数据定义语句:
CREATE
:创建新的数据库、表、索引等。ALTER
:修改现有的数据库、表、索引等。DROP
:删除数据库、表、索引等。- 其他:
SET
:在事务中设置变量或更改数据库会话的某些设置。TRUNCATE
:删除表中的所有行,但不记录单独的行删除操作。当执行这些不返回结果集的语句时,
SqlCommand.ExecuteNonQuery()
方法被用于执行命令。它返回一个整数,表示受影响的行数(对于INSERT
、UPDATE
和DELETE
语句)或表示命令是否成功执行(对于CREATE
、ALTER
和DROP
语句,尽管不是所有数据库系统都会为这些命令返回受影响的行数)。总结
"不返回结果集" 意味着执行 SQL 语句后,你不会得到一个可以逐行读取的数据集。相反,你可能会得到一个表示受影响的行数的整数,或者只是一个表示命令是否成功执行的确认。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。