ADO.NET访问数据库基础技术介绍

      ADO.NET是.NET框架中用于访问数据库的一组类和技术。它提供了一种低级别的数据访问方式,允许开发人员直接使用SQL查询来与数据库交互。

ADO.NET主要由以下几个重要的组件组成:

  • Connection(连接):

Connection类用于在应用程序和数据库之间建立连接。它是连接数据库的关键组件,可以打开和关闭与数据库的连接。通过Connection对象,你可以指定数据库的位置、凭据、连接超时等参数。

  • Command(命令):

Command类用于执行SQL查询或存储过程,并与数据库进行交互。它允许你执行SQL语句(例如SELECT、INSERT、UPDATE、DELETE等),并从数据库中检索数据或修改数据。Command对象也可以执行存储过程。

  • DataReader(数据读取器):

DataReader是一种只进只读的数据访问方式。当你执行查询并希望逐行读取结果时,DataReader非常有用。它比DataSet更轻量级,对于大型数据集来说,性能更好,因为它不需要将整个结果集加载到内存中。

  • DataAdapter(数据适配器):

DataAdapter是用于填充DataSet(数据集)和更新数据库的桥梁。它可以从数据库中检索数据,并将其填充到DataSet中的DataTable对象中。同样,它也可以从DataSet中获取更改,并将这些更改更新回数据库。

  • DataSet(数据集):

DataSet是一个内存中的缓存,用于在应用程序中保存从数据库中检索的数据。它可以包含多个DataTable对象,关系和约束,可以方便地在应用程序中进行数据处理。

  • DataTable(数据表):

DataTable是DataSet中的一个表,用于保存行和列的数据。它类似于数据库表,但存储在内存中。DataTable提供了各种方法来操作和处理数据。

  • DataRow(数据行):

DataRow是DataTable中的一行数据。它包含了行中的各个字段的值,可以通过列名或索引来访问这些值。

  • DataAdapter(数据适配器):

DataAdapter是用于填充DataSet和更新数据库的桥梁。它可以从数据库中检索数据,并将其填充到DataSet中的DataTable对象中。同样,它也可以从DataSet中获取更改,并将这些更改更新回数据库。

  • Parameter(参数):

Parameter类用于在执行数据库命令时向查询传递参数。通过使用参数,你可以有效地防止SQL注入攻击,并且可以在多次执行相同命令时提高性能。

ADO.NET提供了强大的数据访问能力,可以与各种关系型数据库(如SQL Server、Oracle、MySQL等)进行交互。开发人员可以根据需要选择使用合适的组件来实现他们的数据访问需求。


当使用C#中的ADO.NET来访问数据库时,以下是上述9个主要组件的详细使用方法:
Connection(连接):
使用Connection类来建立与数据库的连接。首先,需要创建一个Connection对象,然后设置连接字符串(包含数据库的位置、凭据等信息),最后使用Open()方法打开连接。使用完连接后,记得通过Close()方法关闭连接,以释放资源。
using System.Data.SqlClient; // 或者使用其他数据库提供程序命名空间
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;";
SqlConnection connection = new SqlConnection(connectionString);
try
{
    connection.Open();
    // 连接已打开,可以执行数据库操作
}
catch (Exception ex)
{
    // 处理连接错误
}
finally
{
    connection.Close();
}

Command(命令):
使用Command类来执行SQL查询或存储过程。创建Command对象时,需要指定连接对象,并设置CommandText属性为要执行的SQL语句或存储过程名。执行命令时,可以使用ExecuteReader()方法来返回一个DataReader对象,使用ExecuteNonQuery()方法来执行无返回结果的命令,或使用ExecuteScalar()方法来返回单个值。
string sqlQuery = "SELECT * FROM MyTable";
SqlCommand command = new SqlCommand(sqlQuery, connection);
// 执行查询并返回一个DataReader
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
    // 处理读取到的数据
}
// 执行无返回结果的命令
int rowsAffected = command.ExecuteNonQuery();
// 执行并返回单个值
object result = command.ExecuteScalar();

DataReader(数据读取器):
DataReader是只进只读的数据访问方式。在使用Command对象的ExecuteReader()方法执行查询后,返回的DataReader对象可以用于逐行读取结果。
string sqlQuery = "SELECT FirstName, LastName FROM Customers";
SqlCommand command = new SqlCommand(sqlQuery, connection);
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
    string firstName = dataReader["FirstName"].ToString();
    string lastName = dataReader["LastName"].ToString();
    // 处理数据
}
dataReader.Close();

DataAdapter(数据适配器):
DataAdapter用于填充DataSet和更新数据库。首先,创建DataAdapter对象并指定查询或命令。然后,使用DataAdapter的Fill()方法将查询结果填充到DataSet的DataTable中。
string sqlQuery = "SELECT * FROM MyTable";
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlQuery, connection);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet, "MyTable");
// 现在DataSet中包含了从数据库中检索的数据,可以在DataTable中进行处理
DataTable dataTable = dataSet.Tables["MyTable"];

DataSet(数据集):
DataSet是一个内存中的缓存,用于保存从数据库中检索的数据。可以包含多个DataTable对象,关系和约束,可以方便地在应用程序中进行数据处理。
DataSet dataSet = new DataSet();
// 假设已经有了DataTable对象
DataTable dataTable = new DataTable("MyTable");
dataSet.Tables.Add(dataTable);

DataTable(数据表):
DataTable是DataSet中的一个表,用于保存行和列的数据。通过Columns属性可以定义表的列,通过Rows属性可以访问表中的数据行。
DataTable dataTable = new DataTable("MyTable");
// 定义表的列
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
// 添加数据行
dataTable.Rows.Add(1, "John Doe");
dataTable.Rows.Add(2, "Jane Smith");

DataRow(数据行):
DataRow是DataTable中的一行数据。它包含了行中的各个字段的值,可以通过列名或索引来访问这些值。
// 假设dataTable已经存在并包含数据
foreach (DataRow row in dataTable.Rows)
{
    int id = (int)row["ID"];
    string name = row["Name"].ToString();
    // 处理数据
}

DataAdapter(数据适配器):
DataAdapter用于填充DataSet和更新数据库。首先,创建DataAdapter对象并指定查询或命令。然后,使用DataAdapter的Fill()方法将查询结果填充到DataSet的DataTable中。
string sqlQuery = "SELECT * FROM MyTable";
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlQuery, connection);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet, "MyTable");
// 现在DataSet中包含了从数据库中检索的数据,可以在DataTable中进行处理
DataTable dataTable = dataSet.Tables["MyTable"];

Parameter(参数):
Parameter类用于在执行数据库命令时向查询传递参数。通过使用参数,你可以有效地防止SQL注入攻击,并且可以在多次执行相同命令时提高性能。
string sqlQuery = "SELECT * FROM MyTable WHERE Age > @AgeParam";
SqlCommand command = new SqlCommand(sqlQuery, connection);
// 添加参数
command.Parameters.AddWithValue("@AgeParam", 25);
// 执行查询并处理结果
SqlDataReader dataReader = command.ExecuteReader();
// 处理数据
以上是使用C#中的ADO.NET组件访问数据库的基本方法。根据具体的需求和情况,可以进一步学习和探索各个组件的更高级用法和更复杂的数据操作。

DataGridView是C# Windows Forms中的一个控件,它用于在界面上显示和编辑数据表格,是一种强大且灵活的数据显示控件。它可以与DataTable或其他数据源结合使用,方便地在界面上显示数据,并允许用户进行交互和编辑。
DataGridView可以通过数据绑定与数据源进行关联,最常见的数据源是DataTable。通过将DataGridView的DataSource属性设置为DataTable,可以将DataTable中的数据显示在DataGridView控件中。 
            string query = "SELECT * FROM Customers";
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                dataTable = new DataTable();
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                adapter.Fill(dataTable);
                dataGridView1.DataSource = dataTable;

            }

猜你喜欢

转载自blog.csdn.net/book_dw5189/article/details/131906972