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

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

时间:2023-10-11 18:02:05浏览次数:42  
标签:DataReader stringBuilder DataView System DataSet dataReader new using conn

https://blog.csdn.net/lilongsy/article/details/127351421

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://www.cnblogs.com/Dongmy/p/17757832.html

相关文章

  • pytorch 自定义dataset类
    实现模版classour_dataset(Dataset):def__init__(self,···):super(our_dataset,self).__init__()#初始化,可以自定义添加参数def__getitem__(self,index):···returnimg,label#根据索引(0,len(dataset)-1)获取......
  • 解决tansorflow新手教程的keras.datasets数据下载问题
    portal>https://github.com/tensorflow/tensorflow/issues/33285......
  • from sklearn.datasets.samples_generator import make_blobs
     fromsklearn.datasets.samples_generatorimportmake_blobsmake_blobs方法:sklearn.datasets.make_blobs(n_samples=100,n_features=2,centers=3,cluster_std=1.0,center_box=(-10.0,10.0),shuffle=True,random_state=None)make_blobs函数是为聚类或分类产生数据集,产生一......
  • 心理健康数据集:mental_health_chatbot_dataset
    一.数据集描述1.数据集摘要  该数据集包含与心理健康相关的问题和答案的对话对,以单一文本形式呈现。数据集是从流行的医疗博客(如WebMD、MayoClinic和HealthLine)、在线常见问题等来源精选而来的。所有问题和答案都经过匿名化处理,以删除任何个人身份信息(PII),并经过预处理以删除......
  • NLP(六十二)HuggingFace中的Datasets使用
    Datasets库是HuggingFace生态系统中一个重要的数据集库,可用于轻松地访问和共享数据集,这些数据集是关于音频、计算机视觉、以及自然语言处理等领域。Datasets库可以通过一行来加载一个数据集,并且可以使用HuggingFace强大的数据处理方法来快速准备好你的数据集。在ApacheArrow......
  • Three ways to conditionally remove variables in a dataset
    Method1:proccontentsdata=carsshortout=outds00;run;dataoutds(keep=name);setoutds00;vnam=substr(name,1,1);ifvnamne"M"thenoutput;run;proctransposedata=outdsout=outds01(drop=_name__label_);idname;run;dataoutds02(drop=......
  • A Challenge Dataset and Effective Models for Aspect-Based Sentiment Analysis
    摘要基于方面的情感分析(ABSA)由于其广泛的应用,近年来受到了越来越多的关注。在现有的ABSA数据集中,大多数句子只包含一个或多个具有相同情感极性的方面,这使得ABSA任务退化为句子级情感分析。在本文中,我们提出了一个新的大规模多方面多情感(MAMS)数据集,其中每个句子至少包含两个具有不......
  • train_set_x_orig = np.array(train_dataset["train_set_x"][:])
    这行代码的作用是将 train_dataset 字典中的 "train_set_x" 键对应的值转换为一个NumPy数组,并将其赋值给变量 train_set_x_orig。首先,train_dataset["train_set_x"] 表示从 train_dataset 字典中获取键为 "train_set_x" 的值。接下来,[:] 表示获取该值的所有元素。最......
  • Lnton羚通视频算法算力云平台【PyTorch】教程:学习Datasets-DataLoader基础知识
    Dataset&DataLoaderPyTorch提供了两个数据处理的基本方法:torch.utils.data.DataLoadertorch.utils.data.Dataset允许使用预加载的数据集以及自己的数据。Dataset存储样本及其对应的标签,DataLoader在Dataset基础上封装了一个可迭代的对象,以方便访问样本。PyTorch提供了......
  • 实践教程|源码级理解Pytorch中的Dataset和DataLoader
    前言 本文30分钟带你达到对Pytorch中的Dataset和DataLoader的源码级理解,并提供构建数据管道的3种常用方式的范例,扫除你构建数据管道的一切障碍。本文转载自算法美食屋作者|梁云1991仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最......