Ⅰ 如何支持動態拼接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進行轉換。肯定報錯的。