在 C# 中对某个数据库或表运行 SQL 脚本?

Posted

技术标签:

【中文标题】在 C# 中对某个数据库或表运行 SQL 脚本?【英文标题】:Run an SQL script to a certain Database or Table in C#? 【发布时间】:2015-07-24 07:13:27 【问题描述】:

如何 这是我目前的设置: 我有一台服务器,里面有多个数据库。我想在某个数据库或表上运行 SQL 脚本,如何在 C# 中运行脚本,在其中我可以定义脚本应该在哪个数据库/表中运行?谢谢

【问题讨论】:

你用什么来连接数据库?奥姆? ADO.NET? 我正在使用 SQL Server @dksandimas 想知道您是通过 System.Data 命名空间类 (ADO.Net) 从 C# 连接到服务器,还是使用类似实体框架的 OR 映射器。 【参考方案1】:

你可以试试USE 声明。也就是说,在运行 sql 脚本之前尝试使用数据库名称,

USE DatabaseName;
SELECT * FROM TableName;

否则您也可以尝试将数据库名称关联到表名中,例如,

SELECT * FROM DatabaseName.TableName;

希望这会有所帮助...

【讨论】:

【参考方案2】:

只是众多方法中的一种,不是最简洁的方法:创建 SqlCommand 时,直接在其构造函数中设置 ConnectionString。

SqlCommand Class

SqlConnection Class (your ConnectionString)

【讨论】:

我的连接字符串直接连接到服务器(根),因为我的程序需要列出服务器内的所有数据库并对其中一个数据库执行脚本 好吧,这完全是另一个问题:在每个 SQL Server 的主数据库中,都有一个表 sysObjects。您可以查询它以在服务器上的其他数据库中查找有关您的 Schema 的所有元信息。 所以你的意思是,我必须为每个数据库生成一个连接字符串? 不一定。您还可以更改 SqlConnection 对象中的数据库属性。但是是的,每次创建 SqlCommand 对象时都需要提供正确的 SqlConnection。【参考方案3】:

要从 C# 运行脚本,您应该像这样修改脚本。在这里,您将数据库名称定义为“初始目录”。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.IO;
using System.Data.SqlClient;

public partial class ExcuteScript : System.Web.UI.Page

    protected void Page_Load(object sender, EventArgs e)
    
    string sqlConnectionString = @"Initial Catalog=northwind;Data Source=subhash\SQLEXPRESS;Integrated Security=SSPI;Persist Security Info=False;";

    string script = File.ReadAllText(@"E:\Project Docs\TACT\northwinddata.sql");

    SqlConnection conn = new SqlConnection(sqlConnectionString);

    Server server = new Server(new ServerConnection(conn));

    server.ConnectionContext.ExecuteNonQuery(script);
    

之后,您的 sql 脚本文件应该管理需求。比如您需要在查询中使用哪个表,您还可以使用“.”连接其他数据库的表。运算符语法是这样的。

 select * from [database].[schema].[table]  where <condition>

【讨论】:

以上是关于在 C# 中对某个数据库或表运行 SQL 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

怎么复制sqlserver数据库里所有的表到另一个数据库中

跟踪在 C# 应用程序或 SQL Server 中对 SQL Server 进行更改的人员

如何从 C# 动态运行 SQL Server CE [Windows mobile] 中的 SQL 脚本文件?

无法在 python 中对 bigquery 运行标准 SQL 查询

Access 可以像 SQL Server 一样生成 CREATE TABLE 脚本代码吗?

使用 Epplus 在 C# 中对 Excel 进行 SQL 查询