兩種技巧處理SQL Server中的單引號_Mssql數(shù)據(jù)庫教程
推薦:三個影響SQL Server性能的關(guān)鍵1 邏輯數(shù)據(jù)庫和表的設(shè)計(jì) 數(shù)據(jù)庫的邏輯設(shè)計(jì)、包括表與表之間的關(guān)系是優(yōu)化關(guān)系型數(shù)據(jù)庫性能的核心。一個好的邏輯數(shù)據(jù)庫設(shè)計(jì)可以為優(yōu)化數(shù)據(jù)庫和應(yīng)用程序打下良好的基
和數(shù)據(jù)庫打交道要頻繁地用到SQL語句,除非你是全部用控件綁定的方式,但采用控件綁定的方式存在著靈活性差、效率低、功能弱等等缺點(diǎn)。因此,大多數(shù)的程序員極少或較少用這種綁定的方式。而采用非綁定方式時許多程序員大都忽略了對單引號的特殊處理,一旦SQL語句的查詢條件的變量有單引號出現(xiàn),數(shù)據(jù)庫引擎就會報錯指出SQL語法不對,本人發(fā)現(xiàn)有兩種方法可以解決和處理這種單引號的問題(以VB為例子)。
方法一:利用轉(zhuǎn)義字符處理SQL語句。下面的函數(shù)可以在執(zhí)行SQL語句前調(diào)用,執(zhí)行處理后的結(jié)果即可產(chǎn)生正確的結(jié)果。
Function ProcessStr(str As String)
Dim pos As Integer
Dim stedest As String
pos = InStr(str, "'")
While pos > 0
str = Mid(str, 1, pos) & "'" & Mid(str, pos 1)
pos = InStr(pos 2, str, "'")
Wend
ProcessStr = str
End Function
其中str參數(shù)是你的SQL字符串。函數(shù)一旦發(fā)現(xiàn)字符串中有單引號出現(xiàn),就在前面補(bǔ)上一個單引號。
方法二:利用數(shù)據(jù)對象中的參數(shù)�?梢岳肁DODB.COMMAND對象,把含有單引號的字符串傳遞給COMMAND,然后執(zhí)行查詢等操作即可。
以上兩種方法比較,方法一增加了系統(tǒng)處理時間,方法二簡潔、高效,如果采用存儲過程,然后再傳遞參數(shù)給存儲過程,存儲過程是預(yù)編譯的,這樣系統(tǒng)的效率更高。
下面就舉例子加以說明。
新建一個項(xiàng)目,項(xiàng)目中有一個窗體(Form1),兩個命令按鈕,一個MSFlexGrid,名稱分別為:Command1,Command2,MSFlexGrid1,一個COMBOX(COMBO1),它的內(nèi)容預(yù)先設(shè)定為"Paolo''f"、"Paolo'f"。Command1演示方法一,Command2演示方法二,MSFlexGrid1存儲方法二查詢(SELECT)結(jié)果。對于其他的SQL操作(INSERT、DELTER、UPDATAE)方法極為類似,筆者就不再贅述。例子中用到SQL SERVER中的PUBS數(shù)據(jù)庫中的EMPLOYEE表,同時可以用SQL語法把其中兩條記錄中的FNAME改為"Paolo''f"、"Paolo'f"。 SQL語法如下:
update employee set fname=" Paolo''''f"
where emp_id='PMA42628M'
update employee set fname=" Paolo''f"
where emp_id='PMA42628M'
程序如下:
首先把前面的函數(shù)加入。
在窗體的通用中聲明如下變量:
Dim cnn1 As ADODB.Connection '連接
Dim mycommand As ADODB.Command '命令
Dim rstByQuery As ADODB.Recordset '結(jié)果集
Dim strCnn As String '連接字符串
Private Sub Form_Load()
Set cnn1 = New ADODB.Connection '生成一個連接
strCnn = "driver={SQL Server};" & _
"server=ZYX_pc;uid=sa;pwd=PCDC;database=pubs" '
沒有系統(tǒng)數(shù)據(jù)源使用連接字符串
'strCnn = "DSN=mydsn;UID=sa;PWD=;"
'DATABASE=pubs;Driver={SQL Server};SERVER=gzl_pc" '
分享:談SQL Server 數(shù)據(jù)挖掘應(yīng)用于商業(yè)智能中智能應(yīng)用的平臺 在過去的二十年中,經(jīng)濟(jì)快速發(fā)展,組織機(jī)構(gòu)普遍都收集了大量的商業(yè)數(shù)據(jù)。然而,擁有大量的數(shù)據(jù)并不意味著擁有了豐富的商業(yè)信息。因此,商業(yè)智能需要進(jìn)展到下一步數(shù)據(jù)挖掘。 數(shù)據(jù)挖掘能幫助您在瀏覽巨量數(shù)據(jù)的同時從中發(fā)現(xiàn)潛在有效的模式,并
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實(shí)例詳解
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-兩種技巧處理SQL Server中的單引號
。