在C#代码中构造字符串传入SQL代码中
2012-01-05 21:51
344 查看
最近遇到一个需求,就是在C#代码中构造字符串然后传入SQL代码中,在SQL中分离此字符串,将结果构造成临时表,作为另一个SQL语句的 in 子句。
解决方案:创建一个函数用于分离字符串;定义一个表变量,用于构造临时表。注意:不能使用declare #tableName 创建临时表,因为这样创建的表会
存在tmpdb系统数据库里面,访问量大的情况下就会造成数据库服务器变大。
C#代码中构造字符串,如:
string yo = "IT,ITMIS";
创建字符串分离函数
CREATE Function [dbo].[Split](@Sql varchar(8000))
returns @temp TABLE (code varchar(100))
As
Begin
DECLARE @Splits varchar(10)
SET @Splits=','
DECLARE @i Int
Set @Sql=RTrim(LTrim(@Sql))
Set @i=CharIndex(@Splits,@Sql)
While @i >= 1
Begin
Insert @temp Values(Left(@Sql,@i-1))
Set @Sql=SubString(@Sql,@i+1,Len(@Sql)-@i)
Set @i=CharIndex(@Splits,@Sql)
End
If @Sql <> ' '
Insert @temp VALUES (@Sql)
Return
End
创建临时表变量
DECLARE @Sql VARCHAR(100)
SET @Sql=@yo
嵌入主查询语句
DECLARE @Sel INT
DECLARE @codeTable TABLE(tmpCode NVARCHAR(100))
INSERT INTO @codeTable(tmpCode) SELECT * FROM SPLIT(@Sql)
SELECT * FROM dbo.ExpensesReimbursementVoucher WHERE DepartmentCode
IN (SELECT * FROM @codeTable)
解决方案:创建一个函数用于分离字符串;定义一个表变量,用于构造临时表。注意:不能使用declare #tableName 创建临时表,因为这样创建的表会
存在tmpdb系统数据库里面,访问量大的情况下就会造成数据库服务器变大。
C#代码中构造字符串,如:
string yo = "IT,ITMIS";
创建字符串分离函数
CREATE Function [dbo].[Split](@Sql varchar(8000))
returns @temp TABLE (code varchar(100))
As
Begin
DECLARE @Splits varchar(10)
SET @Splits=','
DECLARE @i Int
Set @Sql=RTrim(LTrim(@Sql))
Set @i=CharIndex(@Splits,@Sql)
While @i >= 1
Begin
Insert @temp Values(Left(@Sql,@i-1))
Set @Sql=SubString(@Sql,@i+1,Len(@Sql)-@i)
Set @i=CharIndex(@Splits,@Sql)
End
If @Sql <> ' '
Insert @temp VALUES (@Sql)
Return
End
创建临时表变量
DECLARE @Sql VARCHAR(100)
SET @Sql=@yo
嵌入主查询语句
DECLARE @Sel INT
DECLARE @codeTable TABLE(tmpCode NVARCHAR(100))
INSERT INTO @codeTable(tmpCode) SELECT * FROM SPLIT(@Sql)
SELECT * FROM dbo.ExpensesReimbursementVoucher WHERE DepartmentCode
IN (SELECT * FROM @codeTable)
相关文章推荐
- C#和SQL实现的字符串相似度计算代码分享
- 一行代码解决 sql语句 in传入数组变字符串
- C#和SQL实现的字符串相似度计算代码分享
- 代码详解C#中SQL连接字符串的功能
- C# SQL带传入、输出参数及返回值的存储过程
- C#使用比较操作符(!=、<、>、<=、>=)的字符串构造Lambda表达式树,并生成委托执行
- C#(ASP.NET)正则表达式 过滤危险字符函数代码 防SQL注入 很全面的SQL关键字过滤
- sql防注入代码(c#)
- 用C#代码把SQL 数据库的表导出到Excel
- 编写高质量代码改善C#程序的157个建议——建议93:构造方法应初始化主要属性和字段
- c#获取字符串宽度的示例代码(字节数方法)
- C# 过滤sql特殊字符串方法
- C#和Java中执行SQL文件脚本的代码(非常有用)
- 做个了分页,只要传入一个SQL字符串,和排序字段就可以了
- C# 过滤sql特殊字符串方法
- SQL——多行并成一行显示, 以字符串分隔(相当于C#中的join)
- 编写C#代码时,一个字符串太长如何换行
- c# ACCESS/SQL 部分实现代码
- C# 执行SQL事务实例代码
- C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击