ADO.NET操作数据库

简介: 在数据库操作中,获取数据并绑定到GridView上一般来说是我们的目标,下面是经常使用到的一种方式,利用DataAdapter和DataSet,DataTable的配合来实现。先来试试DataAdapter与DataTable。

在数据库操作中,获取数据并绑定到GridView上一般来说是我们的目标,下面是经常使用到的一种方式,利用DataAdapter和DataSet,DataTable的配合来实现。


先来试试DataAdapter与DataTable。

  • 首先获取一个数据库连接对象
  • 再要声明一个SqlCommand对象
  • 申请一个DataAdapter对象和DataTable对象
  • 然后开始进行数据的绑定工作
String connstr = "Data Source=.\\SQLEXPRESS;Initial Catalog=ForDataAdapter;Integrated Security=True";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connstr);
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            if (conn.State==ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功!");
            }
            DataTable dataTable = new DataTable("Student");
            dataTable.Clear();
            String SQLINSERT = "INSERT into Student values('"+textBox_Name.Text.Trim().ToString()+"','"
                +textBox_Class.Text.Trim().ToString()+"','"+textBox_Age.Text.Trim()+"')";
            SqlCommand cmd = new SqlCommand(SQLINSERT, conn);
            cmd.ExecuteNonQuery();
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = cmd;
            adapter.Fill(dataTable);
            dataTable.Clear();
            //显示消息
            SqlDataAdapter adaterSelect = new SqlDataAdapter("Select * from Student", conn);
            adaterSelect.Fill(dataTable);
            dataGridView1.DataSource = dataTable.DefaultView;

注意其中,适配器adapter来填充了datatable类的实例(adapter.Fill(dataTable),作用就是添加或刷新行以与数据源中的行进行匹配


DataAdapter与DataSet进行配合的使用:

  • 首先是建立一个数据库连接对象,并打开它
  • 然后是创建一个适配器,当然方式不止一种(还可以通过SqlCommand方式)
  • 声明DataSet,然后把适配器里面的内容填充到数据集中
  • 最后只需要把数据集作为GridView的数据源就可以了
String connstr = "Data Source=.\\SQLEXPRESS;Initial Catalog=ForDataAdapter;Integrated Security=True";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connstr);
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            if (conn .State==ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功!");
            }
            DataTable dataTable = new DataTable("Student");
            dataTable.Clear();
            String SQLSELECT = "SELECT * from Student order by Name";
            SqlDataAdapter adapter = new SqlDataAdapter(SQLSELECT, conn);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset, "Student");
            dataGridView1.DataSource = dataset;
            dataGridView1.DataMember = "Student";

接下来一起看一看DataReader ,DataReader类是一个简单的数据集,用于从数据源中检索只读数据集,常用于检索大量的数据。DataReader类只允许只读,顺向的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,同时,他还是一种非常节省资源的数据对象!


但是需要注意的是,DataReader是一个比较“强硬”方式,它会独占连接对象,所以每次打开一个新的对象的时候都必须关闭前一个DataReader对象,否则将会收到其产生的异常。
使用步骤:

  • 创建一个数据库连接对象,并记得打开
  • 创建SqlCommand类的实例,然后通过它得到SqlDataReader对象
  • 读取SqlDataReader实例的内容即可
private void button_AddToLB_Click(object sender, EventArgs e)
        {
            String connstr = "Data Source=.\\SQLEXPRESS;Initial Catalog=ForDataAdapter;Integrated Security=True";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connstr);
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            if (conn.State == ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功!");
            }
            SqlCommand cmd = new SqlCommand("Select * from Student", conn);
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    listBox1.Items.Add(reader[0].ToString() + "\t" + reader[1].ToString() + "\t" + reader[2].ToString() + "\n");
                }
            }
            reader.Close();
        }


查阅资料得到:位于System.Data命名空间下的DataSet类是支持ADO.NET的断开式,分布式数据方案的核心对象,他是数据的内存主流的表示形式,无论数据源是什么,他都会提供一致的关系编程模型。另外,他还用于多种不同的数据源。例如用于XML数据或用于管理应用程序本地的数据。DataSet类表示包括相关表,约束和标间关系在内的整个数据集。


总结:
在使用DateSet时应该注意,DataSet表示的可以不只是一个标的内容,但是却是以顺序方式来存储数据源信息的,所以在使用的时候一定要分清即将使用的是哪一个数据源对应的内容。
如下:dataGridVIew.DataSource=dataSet.Table[0].DefaultView;
其中的索引便可以具体到对应的数据集。

目录
相关文章
|
5天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
26 3
|
8天前
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
|
2天前
|
存储 关系型数据库 MySQL
MySQL中数据库的相关操作
MySQL中数据库的相关操作
224 62
|
6天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
16 0
|
8天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
8天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
14 0
|
8天前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
20 2
|
8天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
8天前
|
XML Java 数据库连接
Springboot整合mybatisPlus操作数据库
MyBatis-Plus是MyBatis的增强工具,简化开发、提高效率。它提供官网文档,便于集成到SpringBoot项目中。集成步骤包括添加mybatis-plus-boot-starter和数据库驱动依赖,配置数据源,扫描Mapper类包。Mapper接口继承BaseMapper即可使用基本的CRUD操作。示例代码展示了Service层的增删改查实现。MyBatisPlus还支持逻辑删除、自动填充等功能,同时可与Mybatis XML配合使用,通过调整配置指定XML映射文件位置。
|
8天前
|
关系型数据库 MySQL Go
数据库的事务操作
数据库的事务操作