首页 > 数据库 >ADO.NET读取MySQL数据库的三种方式:DataReader、DataSet、DataView

ADO.NET读取MySQL数据库的三种方式:DataReader、DataSet、DataView

时间:2022-10-22 15:33:21浏览次数:61  
标签:DataReader stringBuilder DataView System DataSet dataReader new using conn


ADO.NET读取MySQL数据库有多种方式:DataReader、DataSet、DataView。
Command对象的ExecuteScalar方法查询数据库获取某个单个值,但是如果获取多行、多列可以用ExcecuteReader,ExcecuteReader返回一个DataReader的数据流对象。
DataSet是存在于内存中的数据库,不依赖于数据库的独立数据集合,内部是用XML来描述数据的,需要与DataAdapter来填充数据。
DataView表示用于排序、筛选、搜索、编辑和排序的DataTable的可绑定数据的自定义视图。
本文使用以上三种方式做了一个实例:

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

MySqlConnection conn;
string sql = @"SELECT * FROM users WHERE 1=1 ";
DataSet dataSet;

private void Form1_Load(object sender, EventArgs e)
{
string connStr = "server=localhost;Database=pikachu;uid=root;pwd=root;charset=utf8";
conn = new MySqlConnection(connStr);
}



private void btnDataReader_Click(object sender, EventArgs e)
{
try
{
MySqlDataReader dataReader;


if(conn.State != ConnectionState.Open)
{
conn.Open();
}

if (conn != null && conn.State == ConnectionState.Open)
{
MySqlCommand command = new MySqlCommand(sql, conn);
dataReader = command.ExecuteReader();
// MessageBox.Show("数据准备完毕!");
StringBuilder stringBuilder = new StringBuilder();

if (dataReader.HasRows)
{
while (dataReader.Read())
{
stringBuilder.Append(string.Format("ID:{0} 用户名:{1}\r\n", dataReader[0].ToString(),
dataReader[1].ToString()));
}
}
dataReader = null;
conn.Close();
MessageBox.Show(stringBuilder.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void btnDataSet_Click(object sender, EventArgs e)
{
try {
if (conn.State != ConnectionState.Open)
{
conn.Open();
}

if (conn != null && conn.State == ConnectionState.Open)
{
MySqlDataAdapter dataAdapter = new MySqlDataAdapter();
dataSet = new DataSet();
dataAdapter.SelectCommand = new MySqlCommand(sql, conn);
dataAdapter.Fill(dataSet);
// 拼接字符串
StringBuilder stringBuilder = new StringBuilder();
// DataTable对象
DataTable dataTable = dataSet.Tables[0];
for (int i = 0; i < dataTable.Rows.Count; i++)
{
stringBuilder.Append(string.Format("ID:{0}, 用户名:{1}\r\n",
dataTable.Rows[i][0], dataTable.Rows[i][1]));
}
conn.Close();
MessageBox.Show(stringBuilder.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void btnDataView_Click(object sender, EventArgs e)
{
if (dataSet == null)
{
MessageBox.Show("dataSet不能为空");
return;
}
DataView dataView = dataSet.Tables[0].DefaultView;
dataView.RowFilter = "id>1";
dataView.Sort = "id DESC";
StringBuilder stringBuilder = new StringBuilder();
foreach(DataRowView dataRowView in dataView)
{
for (int i = 0; i < dataView.Table.Columns.Count; i++)
{
stringBuilder.Append(dataRowView[i].ToString() + "\r\n");
}
}
MessageBox.Show(stringBuilder.ToString());
}
}
}


标签:DataReader,stringBuilder,DataView,System,DataSet,dataReader,new,using,conn
From: https://blog.51cto.com/lilongsy/5785893

相关文章

  • DataSet与DataLoaders使用教程
    title:DataSet与DataLoaders使用教程mathjax:truedate:2022-10-0409:13:43tags:DataSetDataLoaderDataSet与DataLoaders使用教程4、PyTorch的Dataset与Data......
  • DDD20 End-to-End Event Camera Driving Dataset: Fusing Frames and Events with Dee
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!AcceptedinThe23rdIEEEInternationalConferenceonIntelligentTransportationSystems(SpecialSession:......
  • 曾经最强性能的人脸检测算法(Wider Face Dataset)
    计算机视觉研究院专栏作者:Edison_G今天分享的内容,在其他各平台估计都有陆续分享,今天我们“计算机视觉研究院”从我们自己的角度来分析下YOLOF框架,看看他值不值得被CVPR2021......
  • C# 读取Excel到DataSet
    1///<summary>2///读取Excel文件3///</summary>4///<returns></returns>5publicstaticDataSetReadExcel(stringpath)6{7DataSetds=ne......
  • 目前最强性能的人脸检测算法(Wider Face Dataset)
           最强性能的人脸检测今天我们不说计算机视觉基础知识,接下来说说AAAI2019一篇比较新颖的Paper,其是中科院自动化所和京东AI研究院联合的结果,在WiderFace......
  • torch.utils.data.Dataset和torch.utils.data.TensorDataset
    首先我们先看一下Dataset的官方api:CLASStorch.utils.data.Dataset(*args,**kwds)AnabstractclassrepresentingaDataset. Alldatasetsthatrepresentama......
  • DataReader 链接关闭解惑篇
    看到有帖子:​​SqlDataReader的关闭问题​​ ,大伙对链接关闭问题看似比较迷惑,这里就给解说一下: 不管是啥xxDataReader,都是继承DataReader实现的,所以是有共性的,因此标题就......
  • coco2017 Dataset EDA
    Github仓库:gy-7/coco_EDA(github.com)对coco数据集的分析,近期忙着写论文,空余时间很少能写博文了。EDA的代码放在结尾了,Github仓库里也有。仓库里还有其他的一些EDA分析,......
  • Dataset与DataFrame创建的比较方式
    DataFrameDataset创建方式1.根据集合或者RDD的隐式函数toDF(列名)创建(需要引入SparkSession的隐式转换函数)2.SparkSession的createDataFrame函数3.外部结构化......
  • 通过createDataset创建Dataset数据集(Array,RDD,List)
    说明定义:底层用到了函数的柯里化,需要传递两个值。第二个值是一个隐式参数,需要定义一个隐式变量给隐式参数传递值。隐式变量不需要我们定义在SparkSession中全部给......