2012-03-07 21 views
1

从cs文件连接到sql时出现错误。我正在尝试在c#中创建CLR函数,而不使用任何需要的IDE。我需要访问数据库才能获得一些价值。以下是在c#中连接到我的数据库的代码。请求的操作需要sql clr上下文

using (SqlConnection conn = new SqlConnection("context connection=true")) 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand(
     "SELECT COUNT(*) AS 'Order Count' FROM customer_master with (nolock)", conn); 
    SqlContext.Pipe.ExecuteAndSend(cmd); 
    return (int)cmd.ExecuteScalar(); 

} 

,但我收到以下错误:

“请求的操作需要一个SQLCLR背景下,SQL Server进程运行时,这是唯一可用”。如果我使用管道,我不知道如何将其转换为int值。任何建议请....

+0

是否在自己的SQL语句的工作?我以为我记得读过MySQL不支持“WITH”的地方。 – Aaron 2012-03-07 23:16:45

+1

就这样,我明白,你正在尝试使用SQL CLR与MySQL?你为什么想这么做? – 2012-03-07 23:17:01

+0

我不认为它是mysql,@ user1031746是否意味着MS SQL? – DaveShaw 2012-03-07 23:18:22

回答

1

按照this Blog后,尝试像这样,与SQLConnection不在使用中。 SQLCommand是一次性的,应该在使用中。

SqlConnection conn = new SqlConnection("context connection=true") ; 
using(SqlCommand cmd = new SqlCommand( 
     "SELECT COUNT(*) AS 'Order Count' FROM customer_master with (nolock)", conn)) 
{ 
    conn.Open(); 
    return (int)cmd.ExecuteScalar();  
} 

我写了下面的第一个,但我认为以上的回答,我要离开的情况下,剔除它是相关的。


一个 ContextConnection是背下来的现有的开放式连接的SQL调用CLR函数使用的连接。 要将SQL CLR函数与 ContextConnection一起使用,您必须从SQL语句中调用它。

例如(其中CLRConvert是我的CLR函数,它连接到我的数据库并执行查询并转换内容)。

select dbo.CLRConvert(Data) from MyTables; 

如果您需要调用它的外面在这里,您将需要一个适当的connection string