当前位置:   article > 正文

DB类的学习

DB类的学习
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data; //引用三个命名空间
  6. using System.Data.SqlClient;
  7. using System.Configuration;
  8. /// <summary>
  9. /// DB 的摘要说明
  10. /// </summary>
  11. public class DB
  12. {
  13. public DB()
  14. {
  15. //
  16. // TODO: 在此处添加构造函数逻辑
  17. //
  18. }
  19. /// <summary>
  20. /// 用于执行返回单个值的select语句
  21. /// </summary>
  22. /// <param name="sql">只返回单个值的select语句</param>
  23. /// <returns>查到的一个值,查询失败返回null</returns>
  24. // 定义一个公开的方法,该方法接受一个SQL查询字符串作为参数,并返回一个object类型的值。
  25. public object queryOneValue(string sql)
  26. {
  27. // 从Web.config文件中获取名为"myDBConnectionString"的数据库连接字符串。
  28. string connStr = ConfigurationManager.ConnectionStrings["myDBConnectionString"].ConnectionString;
  29. // 使用上面获取的连接字符串构造一个SqlConnection对象,用于与数据库建立连接。
  30. SqlConnection conn = new SqlConnection(connStr);
  31. try
  32. {
  33. // 打开数据库连接。
  34. conn.Open();
  35. // 使用提供的SQL查询字符串和已建立的数据库连接构造一个SqlCommand对象。
  36. SqlCommand comm = new SqlCommand(sql, conn);
  37. // 执行SqlCommand对象中的SQL命令,并返回查询结果中的第一行第一列的值(如果有的话)。
  38. // 这通常用于返回单个值,如COUNT(*)的结果或SELECT TOP 1 ...的结果。
  39. object ret = comm.ExecuteScalar();
  40. // 返回查询到的值(如果有的话)。
  41. return ret;
  42. }
  43. catch (Exception ex)
  44. {
  45. // 如果在执行过程中发生任何异常,捕获该异常并返回null。
  46. // 这里应该记录异常信息以便后续调查,但此示例中未显示。
  47. return null;
  48. }
  49. finally
  50. {
  51. // 无论是否发生异常,都会执行finally块中的代码。
  52. // 检查数据库连接是否仍然打开。
  53. if (conn.State == ConnectionState.Open)
  54. {
  55. // 如果连接是打开的,则关闭它。
  56. conn.Close();
  57. }
  58. }
  59. }
  60. // 定义一个公开的方法,该方法接受一个SQL命令字符串作为参数,并返回一个int类型的值。
  61. // 通常,这个返回值表示受影响的行数。
  62. public int ExecuteNonQueryCommand(string sql)
  63. {
  64. // 从Web.config文件中获取名为"myDBConnectionString"的数据库连接字符串。
  65. string connStr = ConfigurationManager.ConnectionStrings["myDBConnectionString"].ConnectionString;
  66. // 使用上面获取的连接字符串构造一个SqlConnection对象,用于与数据库建立连接。
  67. SqlConnection conn = new SqlConnection(connStr);
  68. try
  69. {
  70. // 打开数据库连接。
  71. conn.Open();
  72. // 使用提供的SQL命令字符串和已建立的数据库连接构造一个SqlCommand对象。
  73. SqlCommand comm = new SqlCommand(sql, conn);
  74. // 执行SqlCommand对象中的SQL命令,并返回受影响的行数。
  75. // 这通常用于执行INSERT、UPDATE、DELETE等不返回结果集的命令。
  76. int ret = comm.ExecuteNonQuery();
  77. // 返回受影响的行数。
  78. return ret;
  79. }
  80. catch (Exception ex)
  81. {
  82. // 如果在执行过程中发生任何异常,捕获该异常并返回一个特殊的值(-1)表示操作失败。
  83. // 这里应该记录异常信息以便后续调查,但此示例中未显示。
  84. return -1;
  85. }
  86. finally
  87. {
  88. // 无论是否发生异常,都会执行finally块中的代码。
  89. // 检查数据库连接是否仍然打开。
  90. if (conn.State == ConnectionState.Open)
  91. {
  92. // 如果连接是打开的,则关闭它。
  93. conn.Close();
  94. }
  95. }
  96. }

  1. 使用 ExecuteScalar 时,你应确保SQL查询返回单个值(或没有值,这将返回null)。如果查询返回多行多列的数据,则 ExecuteScalar 将只返回第一行第一列的值,并忽略其他行和列。
  2. 在使用数据库连接时,使用 try-catch-finally 结构可以确保即使在发生异常的情况下,连接也能被正确关闭。这是一个很好的编程实践。

"不返回结果集" 指的是执行 SQL 语句后,数据库不会返回一个可以逐行读取的数据集(如查询结果)。对于 SQL 语句,我们可以大致分为两类:返回结果集的语句和不返回结果集的语句。

返回结果集的语句

这类语句通常用于从数据库中检索数据,例如 SELECT 语句。当你执行一个 SELECT 语句时,数据库会返回一个结果集,你可以遍历这个结果集来读取查询到的数据。

不返回结果集的语句

这类语句通常用于修改数据库中的数据或结构,而不是检索数据。以下是一些不返回结果集的 SQL 语句的例子:

  1. 数据修改语句
    • INSERT:向表中插入新行。
    • UPDATE:更新表中的现有行。
    • DELETE:从表中删除行。
  2. 数据定义语句
    • CREATE:创建新的数据库、表、索引等。
    • ALTER:修改现有的数据库、表、索引等。
    • DROP:删除数据库、表、索引等。
  3. 其他
    • SET:在事务中设置变量或更改数据库会话的某些设置。
    • TRUNCATE:删除表中的所有行,但不记录单独的行删除操作。

当执行这些不返回结果集的语句时,SqlCommand.ExecuteNonQuery() 方法被用于执行命令。它返回一个整数,表示受影响的行数(对于 INSERTUPDATE 和 DELETE 语句)或表示命令是否成功执行(对于 CREATEALTER 和 DROP 语句,尽管不是所有数据库系统都会为这些命令返回受影响的行数)。

总结

"不返回结果集" 意味着执行 SQL 语句后,你不会得到一个可以逐行读取的数据集。相反,你可能会得到一个表示受影响的行数的整数,或者只是一个表示命令是否成功执行的确认。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/590910
推荐阅读
相关标签
  

闽ICP备14008679号