📜  c#执行transact sql(1)

📅  最后修改于: 2023-12-03 15:13:53.664000             🧑  作者: Mango

使用C#执行Transact SQL

简介

Transact SQL (T-SQL) 是由 Microsoft 开发的一种 SQL 方言,它是用于 Microsoft SQL Server 的主要编程语言。C# 是一种由 Microsoft 开发的通用编程语言。本文介绍了如何使用 C# 执行 T-SQL 语句。

准备工作

在开始之前,您需要安装并配置 Microsoft SQL Server 数据库。您还需要确保 C# 应用程序可以访问该数据库,并且具有执行 SQL 查询的权限。

执行查询

您可以使用 .NET Framework 中的 System.Data.SqlClient 命名空间来连接和操作 SQL Server 数据库。使用 SqlConnection 类创建连接对象。使用 SqlCommand 类创建 SQL 查询对象,并使用 ExecuteNonQuery 方法执行查询。下面是一个简单的示例:

using System.Data.SqlClient;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=.;Initial Catalog=ExampleDB;Integrated Security=True";
            string query = "INSERT INTO Users (Name, Age) VALUES ('John', 30)";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(query, connection);
                connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}

上面的示例连接到本地 SQL Server 实例,将名称为 “John” 年龄为 30 的用户添加到名为 “Users” 的表中。使用 using 语句确保在完成操作后及时关闭连接。

使用参数

为了保护应用程序免受 SQL 注入攻击,您应该使用查询参数来代替查询中的值。下面是一个示例:

string name = "John";
int age = 30;
string query = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Name", name);
command.Parameters.AddWithValue("@Age", age);
处理查询结果

当您执行查询时,您可能需要检索查询返回的数据。您可以使用 ExecuteReader 方法返回一个 SqlDataReader 对象,并使用它来读取数据。下面是一个示例:

string query = "SELECT Name, Age FROM Users";
SqlCommand command = new SqlCommand(query, connection);
using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        string name = reader.GetString(0);
        int age = reader.GetInt32(1);
        Console.WriteLine("{0}, {1}", name, age);
    }
}

上面的示例从 “Users” 表中检索名称和年龄,并将其打印到控制台。

处理异常

执行查询时,可能会出现异常。您可以使用 try-catch 块处理异常,并在发生错误时执行适当的操作。下面是一个示例:

try
{
    string query = "INSERT INTO Users (Name, Age) VALUES ('John', 30)";
    SqlCommand command = new SqlCommand(query, connection);
    command.ExecuteNonQuery();
}
catch (SqlException ex)
{
    Console.WriteLine("An error occurred: {0}", ex.Message);
}

上面的示例通过 try-catch 块处理可能出现的 SqlException 异常。

结论

通过使用 C# 和 System.Data.SqlClient 命名空间,您可以轻松地执行 T-SQL 查询并处理查询结果。为了防止 SQL 注入攻击,请使用查询参数代替查询中的值。