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

Sha*_*i C 3 c# sql sql-server clr

我正在使用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;
Run Code Online (Sandbox Code Playgroud)

diz*_*128 11

在CLR中,您可以使用现有连接来运行查询.

简单,将数据返回给客户端:

var cmd = new SqlCommand("select * from [table]");
SqlContext.Pipe.ExecuteAndSend(cmd);
Run Code Online (Sandbox Code Playgroud)

通过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();
Run Code Online (Sandbox Code Playgroud)

运行其他命令:

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();
Run Code Online (Sandbox Code Playgroud)