gpt4 book ai didi

c# - 使用 C# 创建 SQL CLR UDF

转载 作者:行者123 更新时间:2023-11-30 20:49:12 27 4
gpt4 key购买 nike

我的任务是能够将 SQL 查询结果集推送到 Excel 文件。目前我有一个 C# 控制台应用程序(如下),它接受查询,并使用 EPPlus 库将结果转储到指定的 xlsx 文件中。

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using OfficeOpenXml;
using OfficeOpenXml.Style;

namespace ExcelExport
{
class Program
{
static void Main(string[] args)
{

//Create a connection to the database
SqlConnection conn = new SqlConnection("user id=username;" +
"password=password;server=SQL-04;" +
"Trusted_Connection=yes;" +
"database=JOHN; " +
"connection timeout=30");
conn.Open();
//Set up the SQL query
string query = "SELECT TOP 10 FORENAME, SURNAME, POSTCODE FROM JOHN.DBO.TEST ORDER BY POSTCODE ASC";
SqlCommand cmd = new SqlCommand(query, conn);

//Fill a C# dataset with query results
DataTable t1 = new DataTable();
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
a.Fill(t1);
}

//Assign filename to a variable
string filePath = @"C:\Misc\test.xlsx";

var file = new FileInfo(filePath);

//Load the data table into the excel file and save
using (ExcelPackage pck = new ExcelPackage(file))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Data");
ws.Cells["A1"].LoadFromDataTable(t1, true);
pck.Save();
}

//Close the existing connection to clean up
conn.Close();
}
}
}

这很好用,但下一步是将其转换成一个包,可以在 SQL Server 中作为程序集引用。我希望在这里实现的两个主要目标是能够将 SQL 查询和文件名(作为变量)传递给 SQL UDF,后者将此信息传递给此包并运行查询并创建文件。

我想知道,1. 这是否可能。 2. 如果有任何简单的例子,你可以告诉我我将如何处理这个问题。

请原谅我对 C# 的无知,我昨天才开始使用它:/

在此先致以诚挚的问候和感谢,

强尼

最佳答案

正如你所说 -

I would like to know, 1. if this is possible. 2. if there are any quick examples you can give me of how I would go about this.

是的,这是可能的。

好的,为此您必须先在 visual studio 中创建 SQL Server 项目

  • 在 Visual Studio 中 >> 单击新建项目 >> 选择 V​​isual C# >> 数据库 >> SQL Server 项目。
  • 然后提供您现有的数据库连接作为引用。
  • 然后右键单击“解决方案资源管理器”>>单击“添加”>>“已存储”程序
  • 现在将您的代码放入文件中。

这是您的 CLR 存储过程代码。

[SqlProcedure()]
public static void GetMyTestData(
SqlString sqlQuery, SqlString fileName)
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
SqlCommand cmd = new SqlCommand(sqlQuery, conn);

//Fill a C# dataset with query results
DataTable t1 = new DataTable();
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
a.Fill(t1);
}

//Assign filename to a variable

var file = new FileInfo(fileName);

//Load the data table into the excel file and save
using (ExcelPackage pck = new ExcelPackage(file))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Data");
ws.Cells["A1"].LoadFromDataTable(t1, true);
pck.Save();
}

conn.Close();
}
}

现在要按照此 code project article 部署它

希望对你有帮助...

关于c# - 使用 C# 创建 SQL CLR UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com