2
 SqlCommand cmd = new SqlCommand("select Developer from Stackoverflow 
 where UserID='786' and Developer='Sufiyan'", con);
 if (con.State == ConnectionState.Closed)
 {
    con.Open();
 }
 SqlDataReader reader = cmd.ExecuteReader();
 if (reader.Read())
 {
    string codeSnippet = reader["CodeSnippet"].ToString();
    dynamic script = 
     CSScript.LoadCode(@"
     using System;
     using System.Windows.Forms;
     using System.Collections.Generic;
     using System.Data;
     using System.Windows.Forms;
     using System.Data.SqlClient;
     public class RunFromSqlServer
     {
       public void RunCode(string developer){" + codeSnippet + "}"+
               "}").CreateObject("*");script.RunCode("Mohammad Sufiyan Shaikh");
 }
 if (con.State == ConnectionState.Open)
 {
    con.Close();
 }

其中 codeSnippet 可以是您想要运行的任何 c# 代码我已经发布了这个问题以及帮助其他人的答案..

4

3 回答 3

1

你不能像那样真正混合和匹配 SQL 和 c# 代码。有一种方法可以使用名为 SQL CLR 的功能在 SQL Server 2005+ 上运行 .net 代码,但您可以执行的操作存在限制。这是一个教程:如何:创建和运行 CLR SQL Server 用户定义函数原始链接)。

您还可以创建其他内容,例如 SQL CLR 触发器和存储过程。研究 SQL CLR 以获取更多信息。

于 2013-03-08T12:30:18.310 回答
0

在我阅读这个问题之前,我不知道 CS-Script 的存在。非常有趣的技术。从文档看来,您使用它是错误的。

http://www.csscript.net/help/script_hosting_guideline_.html

你应该做这样的事情:

var result = CSScript.Eval("Mohammad Sufiyan Shaikh",
                            @"func(string user) {"
                                  + codeSnippet + ");
                              }"); 
于 2013-03-08T12:41:56.503 回答
0

嗯,它很酷,但我怀疑它是否非常有用,因为你失去了从编译代码中获得的很多好东西。例如,如果有人将语法错误的代码插入数据库表中,您的程序会突然崩溃。

于 2013-03-08T12:59:18.923 回答