返回

用C#常见控件与SQL Server数据库顺畅交互

后端

C#常见控件与SQL Server数据库交互指南

在现代软件开发中,数据库已成为不可或缺的组成部分。无论您是构建桌面应用程序、Web应用程序还是移动应用程序,都可能需要与数据库进行交互以存储和检索数据。C#作为一门强大的编程语言,提供了丰富的控件和类库,可以轻松实现与SQL Server数据库的交互。

本指南将介绍如何使用C#常见控件与SQL Server数据库进行交互,包括连接数据库、绑定数据、执行查询、插入、更新和删除数据等基本操作。我们将使用Visual Studio作为开发环境,并使用SQL Server作为数据库。

1. 连接数据库

在与SQL Server数据库交互之前,我们需要先建立连接。我们可以使用ADO.NET技术来实现连接。ADO.NET是微软为.NET平台提供的访问数据库的统一接口。

以下代码演示了如何使用ADO.NET连接到SQL Server数据库:

using System.Data.SqlClient;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 执行查询
                using (SqlCommand command = new SqlCommand("SELECT * FROM Person.Contact", connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        // 循环读取结果集
                        while (reader.Read())
                        {
                            Console.WriteLine("{0} {1}", reader["FirstName"], reader["LastName"]);
                        }
                    }
                }

                // 关闭连接
                connection.Close();
            }
        }
    }
}

2. 绑定数据

将数据绑定到控件是开发人员经常需要做的工作。数据绑定可以使控件的内容与数据库中的数据保持同步。在C#中,我们可以使用数据绑定控件来实现数据绑定。

以下代码演示了如何将数据绑定到ComboBox控件:

using System.Data.SqlClient;
using System.Windows.Forms;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 创建ComboBox控件
                ComboBox comboBox = new ComboBox();

                // 创建数据适配器
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT ContactID, FirstName, LastName FROM Person.Contact", connection);

                // 填充数据集
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);

                // 将数据集绑定到ComboBox控件
                comboBox.DataSource = dataSet.Tables[0];
                comboBox.DisplayMember = "FirstName";
                comboBox.ValueMember = "ContactID";

                // 关闭连接
                connection.Close();

                // 显示窗体
                Form form = new Form();
                form.Controls.Add(comboBox);
                form.ShowDialog();
            }
        }
    }
}

3. 执行查询

在与数据库交互时,我们经常需要执行查询来检索数据。在C#中,我们可以使用SqlCommand对象来执行查询。

以下代码演示了如何使用SqlCommand对象执行查询:

using System.Data.SqlClient;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 创建SqlCommand对象
                SqlCommand command = new SqlCommand("SELECT * FROM Person.Contact", connection);

                // 执行查询
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    // 循环读取结果集
                    while (reader.Read())
                    {
                        Console.WriteLine("{0} {1}", reader["FirstName"], reader["LastName"]);
                    }
                }

                // 关闭连接
                connection.Close();
            }
        }
    }
}

4. 插入、更新和删除数据

在与数据库交互时,我们有时需要插入、更新或删除数据。在C#中,我们可以使用SqlCommand对象来执行这些操作。

以下代码演示了如何使用SqlCommand对象插入数据:

using System.Data.SqlClient;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 创建SqlCommand对象
                SqlCommand command = new SqlCommand("INSERT INTO Person.Contact (FirstName, LastName) VALUES ('John', 'Doe')", connection);

                // 执行命令
                command.ExecuteNonQuery();

                // 关闭连接
                connection.Close();
            }
        }
    }
}

以下代码演示了如何使用SqlCommand对象更新数据:

using System.Data.SqlClient;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 创建SqlCommand对象
                SqlCommand command = new SqlCommand("UPDATE Person.Contact SET FirstName = 'Jane' WHERE ContactID = 1", connection);

                // 执行命令
                command.ExecuteNonQuery();

                // 关闭连接
                connection.Close();
            }
        }
    }
}

以下代码演示了如何使用SqlCommand对象删除数据:

using System.Data.SqlClient;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 创建SqlCommand对象
                SqlCommand command = new SqlCommand("DELETE FROM Person.Contact WHERE ContactID = 1", connection);

                // 执行命令
                command.ExecuteNonQuery();

                // 关闭连接
                connection.Close();
            }
        }
    }
}

5. 事务处理

在与数据库交互时,有时我们需要执行一系列操作,并且要求这些操作要么全部成功,要么全部失败。这种情况下,我们可以使用事务来保证数据的一致性。

以下代码演示了如何使用事务来保证数据的一致性:

using System.Data.SqlClient;

namespace AdoNetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串
            string connectionString = @"Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";

            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();

                // 开始事务
                using (SqlTransaction transaction = connection.BeginTransaction())
                {
                    try
                    {
                        // 执行第一个操作
                        SqlCommand command1 = new SqlCommand("INSERT INTO Person.Contact (FirstName, LastName) VALUES ('John', 'Doe')", connection, transaction);
                        command1.ExecuteNonQuery();

                        // 执行第二个操作
                        SqlCommand command2 = new SqlCommand("UPDATE Person.Contact SET FirstName = 'Jane' WHERE ContactID = 1", connection, transaction);
                        command2.ExecuteNonQuery();

                        // 提交事务
                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        // 回滚事务
                        transaction.Rollback();

                        // 抛出异常
                        throw ex;
                    }
                }

                // 关闭连接
                connection.Close();
            }
        }
    }
}

结语

本指南介绍了如何使用C