遍历DataSet
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace _05遍历DataSet { class Program { static void Main(string[] args) { System.Data.DataTable dt = CommonCode.Sqlhelper.ExecuteDataTable("select Id,Name,paradId from Table_Para");
//第一种方式: foreach (DataRow item in dt.Rows) { for (int i = 0; i < dt.Columns.Count; i++) { Console.Write(item[i].ToString() + "\t"); } Console.WriteLine(); } //第二种方式: //for (int i = 0; i < dt.Rows.Count; i++) //{ // for (int j = 0; j < dt.Columns.Count; j++) // { // //输出第i行的第j列 // Console.Write(dt.Rows[i][j] + "\t"); // } // Console.WriteLine(); //} Console.ReadKey(); } } }
运行效果图:两种效果图一样
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; namespace CommonCode { public static class Sqlhelper { private static readonly string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString; //执行数据库无非就是执行cmd的以下方法 //1. ExecuteNonQuery 执行一个insert update delete public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddRange(parameters); conn.Open(); return cmd.ExecuteNonQuery(); } } } //2.ExecuteScaler 返回结果集的第一行第一列 public static object ExecuteScaler(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddRange(parameters); conn.Open(); return cmd.ExecuteScalar(); } } } //3.ExecuteReader 返回一个Reader对象,用于读于多行多列数据 //在数据库上产生一个结果集,每次Read,从数据库服务器上读取一条数据回来,所以使用Reader读取数据,不能与数据库断开连接. public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters) { SqlConnection conn = new SqlConnection(ConnectionString); using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddRange(parameters); conn.Open(); try { //在sqlhelper中,由于dr在返回给用户使用,所以注意dr不要使用using(){] SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr; } catch (Exception ex) { conn.Close(); throw ex; } } } //4.执行一个sql语句,并把结果集放入本地的DataTable中.这里数据已 //经放到本地,断开数据库连接,还是可以访问到数据的. public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { using (SqlDataAdapter da = new SqlDataAdapter(sql, conn)) { da.SelectCommand.Parameters.AddRange(parameters); DataTable dt = new DataTable(); //Fill方法其实执行的是da.SelectCommand中的sql语句,这里可以写conn.open也可以不写,如果不写,da会自动连接数据库 da.Fill(dt); return dt; } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构