使用CLR在C#中执行SQL查询

3
我正在使用SQL CLR解析一些表列。我希望在C#用户定义的函数中也能执行查询。有人能给出一个在函数中执行select和insert查询的例子吗?
提前感谢您。
 SqlConnection objSqlConn;
    string connString = string.Empty;
    connString = "Data Source=(local);Initial Catalog=DB;User ID=uname;pwd=pass;Password=pass";
    objSqlConn = new SqlConnection(connString);
    objSqlConn.Open();

    string query = "Select count(*) FROM [DB].[dbo].[TableName]";
    SqlCommand cmdTotalCount = new SqlCommand(query, objSqlConn);
    cmdTotalCount.CommandTimeout = 0;
    string TotalCountValue = cmdTotalCount.ExecuteScalar().ToString();
    return TotalCountValue;
3个回答

12
在CLR中,您可以使用现有的连接来运行查询。
简单地将数据返回给客户端:
var cmd = new SqlCommand("select * from [table]");
SqlContext.Pipe.ExecuteAndSend(cmd);

通过SqlDataReader返回数据:
var con = new SqlConnection("context connection=true"); // using existing CLR context connection
var cmd = new SqlCommand("select * from table", con);
con.Open();
var rdr = cmd.ExecuteReader();
SqlContext.Pipe.Send(rdr);
rdr.Close();
con.Close();

运行其他命令:

var con = new SqlConnection("context connection=true"); // using existing CLR context connection
var cmd = new SqlCommand("insert into [table] values ('ahoj')", con);
con.Open();
var rsa = cmd.ExecuteNonQuery();
con.Close();

0

一旦您转向使用C#,您可以像平常从应用程序中执行查询一样(使用ADO.NET的SqlConnection和SqlDataReader,使用LINQ to SQL或使用您自定义的构建数据层)。


你确定可以在 SQLCLR 中使用 Linq to Sql 吗?数据库项目是否接受 dbml 文件? - liang

-2

要连接数据库,您必须在web.config文件的连接字符串中提及数据库用户名和密码。


@sharmi 你需要一个使用select和insert查询的例子吗?实际上你期望得到什么? - Saasu Ganesan
不,你要像dizzy128解释的那样使用现有的连接。 - Jason Kelley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接