兩種技巧處理SQL Server中的單引號(hào)_Mssql數(shù)據(jù)庫(kù)教程
推薦:三個(gè)影響SQL Server性能的關(guān)鍵1 邏輯數(shù)據(jù)庫(kù)和表的設(shè)計(jì) 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)、包括表與表之間的關(guān)系是優(yōu)化關(guān)系型數(shù)據(jù)庫(kù)性能的核心。一個(gè)好的邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)可以為優(yōu)化數(shù)據(jù)庫(kù)和應(yīng)用程序打下良好的基
和數(shù)據(jù)庫(kù)打交道要頻繁地用到SQL語(yǔ)句,除非你是全部用控件綁定的方式,但采用控件綁定的方式存在著靈活性差、效率低、功能弱等等缺點(diǎn)。因此,大多數(shù)的程序員極少或較少用這種綁定的方式。而采用非綁定方式時(shí)許多程序員大都忽略了對(duì)單引號(hào)的特殊處理,一旦SQL語(yǔ)句的查詢條件的變量有單引號(hào)出現(xiàn),數(shù)據(jù)庫(kù)引擎就會(huì)報(bào)錯(cuò)指出SQL語(yǔ)法不對(duì),本人發(fā)現(xiàn)有兩種方法可以解決和處理這種單引號(hào)的問(wèn)題(以VB為例子)。
方法一:利用轉(zhuǎn)義字符處理SQL語(yǔ)句。下面的函數(shù)可以在執(zhí)行SQL語(yǔ)句前調(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)字符串中有單引號(hào)出現(xiàn),就在前面補(bǔ)上一個(gè)單引號(hào)。
方法二:利用數(shù)據(jù)對(duì)象中的參數(shù)�?梢岳肁DODB.COMMAND對(duì)象,把含有單引號(hào)的字符串傳遞給COMMAND,然后執(zhí)行查詢等操作即可。
以上兩種方法比較,方法一增加了系統(tǒng)處理時(shí)間,方法二簡(jiǎn)潔、高效,如果采用存儲(chǔ)過(guò)程,然后再傳遞參數(shù)給存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程是預(yù)編譯的,這樣系統(tǒng)的效率更高。
下面就舉例子加以說(shuō)明。
新建一個(gè)項(xiàng)目,項(xiàng)目中有一個(gè)窗體(Form1),兩個(gè)命令按鈕,一個(gè)MSFlexGrid,名稱分別為:Command1,Command2,MSFlexGrid1,一個(gè)COMBOX(COMBO1),它的內(nèi)容預(yù)先設(shè)定為"Paolo''f"、"Paolo'f"。Command1演示方法一,Command2演示方法二,MSFlexGrid1存儲(chǔ)方法二查詢(SELECT)結(jié)果。對(duì)于其他的SQL操作(INSERT、DELTER、UPDATAE)方法極為類似,筆者就不再贅述。例子中用到SQL SERVER中的PUBS數(shù)據(jù)庫(kù)中的EMPLOYEE表,同時(shí)可以用SQL語(yǔ)法把其中兩條記錄中的FNAME改為"Paolo''f"、"Paolo'f"。 SQL語(yǔ)法如下:
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 '生成一個(gè)連接
strCnn = "driver={SQL Server};" & _
"server=ZYX_pc;uid=sa;pwd=PCDC;database=pubs" '
沒(méi)有系統(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)用的平臺(tái) 在過(guò)去的二十年中,經(jīng)濟(jì)快速發(fā)展,組織機(jī)構(gòu)普遍都收集了大量的商業(yè)數(shù)據(jù)。然而,擁有大量的數(shù)據(jù)并不意味著擁有了豐富的商業(yè)信息。因此,商業(yè)智能需要進(jìn)展到下一步數(shù)據(jù)挖掘。 數(shù)據(jù)挖掘能幫助您在瀏覽巨量數(shù)據(jù)的同時(shí)從中發(fā)現(xiàn)潛在有效的模式,并
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 在SQL Server中通過(guò).NET遠(yuǎn)程的執(zhí)行SQL文件
- SQL普通表轉(zhuǎn)分區(qū)表的方法
- 是什么讓SQL Server加速運(yùn)行
- 詳解SQL存儲(chǔ)過(guò)程
- SqlServer獲取存儲(chǔ)過(guò)程返回值的實(shí)例
- 謹(jǐn)記SQL Server索引管理的六大鐵律
- 淺談Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)技術(shù)經(jīng)驗(yàn)
- 如何解決SQL Server不允許進(jìn)行遠(yuǎn)程連接的問(wèn)題
- SQL Server 2008中的新日期數(shù)據(jù)類型
- 怎樣巧妙規(guī)劃使用Oracle數(shù)據(jù)空間
猜你也喜歡看這些
- mysql隨機(jī)查詢的優(yōu)化
- 解析csv數(shù)據(jù)導(dǎo)入mysql的方法
- MySQL筆記之索引的使用
- MySQL數(shù)據(jù)庫(kù)INNODB 表?yè)p壞修復(fù)過(guò)程
- MSSQL清空日志刪除日志文件
- MySQL筆記之運(yùn)算符使用詳解
- CentOS6.3安裝MySQL5.6.10并修改MySQL的root用戶密碼
- 如何用cmd連接Mysql數(shù)據(jù)庫(kù)
- PHP mysqli 增強(qiáng) 批量執(zhí)行sql 語(yǔ)句的實(shí)現(xiàn)代碼
- MySQL中優(yōu)化sql語(yǔ)句查詢常用的30種方法
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-兩種技巧處理SQL Server中的單引號(hào)
。