Ⅰ 如何支持动态拼接sql的参数化查询求解答
remarkvarchar(100))go--写入部分测试数据insertintooswica_test_table_1select1,
'oswica',''insertintooswica_test_table_1select2,
'stone',''insertintooswica_test_table_1select3,
'nana',''insertintooswica_test_table_1select4,
'nana',''go--建立存储过程createprocoswica_proc_querytestdata(@whereSqlnvarchar(max),
@paramNameListnvarchar(max),
@paramValueListnvarchar(max))asbegindeclare@exesqlnvarchar(max)
--生成查询语句set@exesql='EXECsp_executesqlN'
'select*fromoswica_test_table_1'
+@whereSql+''
',N'''+@paramNameList+''
','
+@paramValueList+''
print@exesqlexec(@exesql)endgo--执行存储过程execoswica_proc_querytestdataN
'whereid=@idandname=@name',N
'@idint,@namevarchar(50)',N
'@id=1,@name=''oswica'''go--结果
--EXECsp_executesqlN'select*fromoswica_test_table_1whereid=@idandname=@name',N'@idint,@namevarchar(50)',@id=1,@name='oswica'
--idnameremark
-------------------------------------------------------------------------------------------------------------------------------------------------------------------1oswica--说明
--实际上我们不推荐直接在存储过程中这么使用。因为这里还是存在执行代码里面有拼接sql的情况。
--最好的办法是在程序代码里面动态拼接好然后使用参数方式动态的根据实际参数个数传入参数,已
--实现即能够兼容参数化查询又能够拼接字符串。----建议
--按照上面的说法,我们可以拼接如下sql:
--select*fromoswica_test_table_1whereid=@idandname=@name
--然后按照拼接的参数个数使用SqlCommand的Parameters动态的添加2个参数:@id和@name来达到
--目的。而在编程语言中实现动态添加参数相对比较容易,或者通过实现sqlserver的CLR存储过程来
--达到这一目的。
Ⅱ python中的sql参数化,想向sql中传入一组参数,要怎么写
一般的处理思路是将数据库操作的方法放在一个模块中,比如connectsql.py:
import mysqldb
def execnonquery(sql):
conn = mysqldb.connect(host='xxxx',user='xxxx',passwd='xxxx',db='xxxx')
cur = conn.cursor()
cur.execute(sql)
conn.commit()
conn.close()那么你的a.py代码为:
from connectsql import *
def mysql_insert(i,data):
try:
execnonquery('insert into mytest values(%s,%s)' % (i,data))
except:
return 0你的b.py代码不变。
Ⅲ sql为什么要参数化,怎么参数化
一、最主要是: 数据库 机制问题,参数化 可以加快 执行效率,数据库有个缓存区,可以缓存 非参数部分的语句(或者说 下次执行不用数据库再次 解析语句),而不用参数,每次数据库 都需要解析 语句
二、次要是:防止,sql语句特殊字,注入:减少,字符转义等
三、清晰 便于理解
Ⅳ SQL查询参数化举例
大概是在接受到$posts[age],接着$param=$_POST["age"];
再搜索这个变量里面的值,如果存在某个值就替换掉他。[*]具体你可以参考
http://bbs.cnhonker.com/forum.php?mod=viewthread&tid=5984&extra=page%3D1
Ⅳ ASP.NET C# SQL参数化
代码没有,倒是可以给你三个建议:
1、使用存储过程,这样就参数化了,可以防止sql语句的非法注入
2、写一个函数,把插入语句的sql中的 ' 字符替换为空:
public static string Filtered(string str)
{
str = str.Replace("'", "");
str = str.Replace("@", "");
str = str.Replace("=", "");
str = str.Replace("!", "");
str = str.Replace(" ", "");
str = str.Replace(".", "");
str = str.Replace("[", "");
str = str.Replace("\\", "");
return str;
}
3.登录的时候将文本框内的内容加密输入数据库。。。
Ⅵ 参数化查询的SQL 指令撰写方法
在撰写 SQL 指令时,利用参数来代表需要填入的数值,例如: Microsoft SQL Server 的参数格式是以 @ 字符加上参数名称而成,SQL Server 亦支持匿名参数 ?。
SELECT * FROM myTable WHERE myID = @myID
INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4) Microsoft Access 不支持具名参数,只支持匿名参数 ?。
UPDATE myTable SET c1 = ?, c2 = ?, c3 = ? WHERE c4 = ? MySQL 的参数格式是以 ? 字符加上参数名称而成。
UPDATE myTable SET c1 = ?c1, c2 = ?c2, c3 = ?c3 WHERE c4 = ?c4 SqlCommand sqlcmd = new SqlCommand(INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4), sqlconn);
sqlcmd.Parameters.AddWithValue(@c1, 1); // 设定参数 @c1 的值。
sqlcmd.Parameters.AddWithValue(@c2, 2); // 设定参数 @c2 的值。
sqlcmd.Parameters.AddWithValue(@c3, 3); // 设定参数 @c3 的值。
sqlcmd.Parameters.AddWithValue(@c4, 4); // 设定参数 @c4 的值。
sqlconn.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close(); $query = sprintf(SELECT * FROM Users where UserName='%s' and Password='%s',
mysql_real_escape_string($Username),
mysql_real_escape_string($Password));
mysql_query($query);
或是
$db = new mysqli(localhost, user, pass, database);
$stmt = $mysqli -> prepare(SELECT priv FROM testUsers WHERE username=? AND password=?);
$stmt -> bind_param(ss, $user, $pass);
$stmt -> execute(); PreparedStatement prep = conn.prepareStatement(SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?);
prep.setString(1, username);
prep.setString(2, password); <cfquery name=Recordset1 datasource=cafetownsend>
SELECT *
FROM COMMENTS
WHERE COMMENT_ID =<cfqueryparam value=#URL.COMMENT_ID# cfsqltype=cf_sql_numeric>
</cfquery>
Ⅶ C# SQL参数化问题
加上@是为了区分传入参数和sql中的参数的区别
@XXX 表示 XXX这个数据 可以是数据库里本身计有的数据,也可以是外部传入数据库的数据
没有@ 表示 XXX这个数据只是数据库记载的数据 外部传入数据库的数据无法读出
Ⅷ sql怎么使用参数化
采用sp_executesql 系统存储过程,执行sql语句,就能传入参数,
这就是sql参数化sql脚本参数化
你可以根据上面的例子,将sql脚本中定义参数,然后后面赋值参数变量,
在查询分析器中执行,你就可以知道sql参数化的具体实现和概念了。
如有疑问,请及时沟通!
请采纳!
Ⅸ sql语句参数化
当然了,你exeDataTablePage的时候只是@sql这个变量。
根本就没把@Idx和@NO进行转换。肯定报错的。