用C#常见控件与SQL Server数据库顺畅交互
2023-09-09 19:04:27
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