自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server單引號的2種處理方案

數(shù)據(jù)庫 SQL Server
我們今天是要和大家一起討論的是SQL Server單引號的2種處理方案,假如你對SQL Server單引號處理的實(shí)際操作方案有興趣了解的話,你就可以點(diǎn)擊以下的文章了。

以下的文章主要描述的是SQL Server單引號的2種處理方案,我們大家在實(shí)際操作中和數(shù)據(jù)庫打交道時,SQL語句的使用頻率是非常高的,當(dāng)然你也可以是全部用控件綁定的方式,但采用控件綁定的方式存在著靈活性差、效率低、功能弱等等缺點(diǎn)。

因此,大多數(shù)的程序員極少或較少用這種綁定的方式。而采用非綁定方式時許多程序員大都忽略了對SQL Server單引號的特殊處理,一旦SQL語句的查詢條件的變量有單引號出現(xiàn),數(shù)據(jù)庫引擎就會報錯指出SQL語法不對,本人發(fā)現(xiàn)有兩種方法可以解決和處理這種SQL Server單引號的問題(以VB為例子)。

SQL Server單引號處理技巧方法一:

利用轉(zhuǎn)義字符處理SQL語句。下面的函數(shù)可以在執(zhí)行SQL語句前調(diào)用,執(zhí)行處理后的結(jié)果即可產(chǎn)生正確的結(jié)果。

 

  1. Function ProcessStr(str As String) Dim pos As Integer Dim stedest As String pos = InStr(str, "'")   
  2. 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)字符串中有SQL Server單引號出現(xiàn),就在前面補(bǔ)上一個單引號。

 

SQL Server單引號處理技巧方法二:

 

利用數(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語法如下:

 

 

  1. update employee set fname=" Paolo''''f" where emp_id='PMA42628M' update employee set fname=" Paolo''f" where emp_id='PMA42628M' 

程序如下:

 

首先把前面的函數(shù)加入。在窗體的通用中聲明如下變量:

 

 

  1. Dim cnn1 As ADODB.Connection '連接 Dim mycommand As ADODB.Command '命令   
  2. Dim rstByQuery As ADODB.Recordset '結(jié)果集 Dim strCnn As String '連接字符串   
  3. Private Sub Form_Load() Set cnn1 = New ADODB.Connection '生成一個連接   
  4. strCnn = "driver={SQL Server};" & _ "server=ZYX_pc;uid=sa;pwd=PCDC;database=pubs" '   
  5. 沒有系統(tǒng)數(shù)據(jù)源使用連接字符串 'strCnn = "DSN=mydsn;UID=sa;PWD=;" 'DATABASE=pubs;  
  6. Driver={SQL Server};SERVER=gzl_pc" ' 如果系統(tǒng)數(shù)據(jù)源MYDSN指向PUBS數(shù)據(jù)庫,  
  7. 也可以這樣用 cnn1.Open strCnn, , , 0 '打開連接 End Sub Private Sub Command1_Click() '  
  8. 演示字符處理 Dim i As Integer Dim j As Integer Set parm = New ADODB.  
  9. Parameter Set mycommand = New ADODB.Command Dim str As String str = Combo1.  
  10. Text str = ProcessStr (str) mycommand.ActiveConnection = cnn1 '   
  11. 指定該command 的當(dāng)前活動連接 mycommand.CommandText = " select * from employee  
  12. where fname = '" & str & "'mycommand.CommandType = adCmdText '表明command 類型  
  13. Set rstByQuery = New ADODB.Recordset Set rstByQuery = mycommand.Execute() i = 0 Do   
  14. While Not rstByQuery.EOF ii = i + 1 ' i 中保存記錄個數(shù) rstByQuery.MoveNext Loop MSFlexGrid1.  
  15. Rows = i + 1 '動態(tài)設(shè)置MSFlexGrid的行和列 MSFlexGrid1.Cols = rstByQuery.Fields.count + 1  
  16. MSFlexGrid1.Row = 0 For i = 0 To rstByQuery.Fields.count - 1 MSFlexGrid1.Col = i + 1   
  17. MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name Next '設(shè)置第一行的標(biāo)題,用域名填充 i = 0 '  
  18. Set rstByQuery = mycommand.Execute() rstByQuery.Requery Do While Not rstByQuery.EOF ii 
  19. = i + 1 MSFlexGrid1.Row = i '確定行 For j = 0 To rstByQuery.Fields.count - 1 MSFlexGrid1.  
  20. Col = j + 1 MSFlexGrid1.Text = rstByQuery(j) '添充所有的列 Next rstByQuery.MoveNext Loop '  
  21. 這個循環(huán)用來填充MSFlexGrid的內(nèi)容 End Sub Private Sub Command2_Click()'參數(shù)方法 Dim i As  
  22. Integer Dim j As Integer Set parm = New ADODB.Parameter Set mycommand = New ADODB.  
  23. Command ' parm_jobid.Name = "name1" this line can be ommited parm.Type = adChar '  
  24. 參數(shù)類型 parm.Size = 10 '參數(shù)長度 parm.Direction = adParamInput '參數(shù)方向,輸入或輸出  
  25. parm.Value = Combo1.Text '參數(shù)的值 mycommand.Parameters.Append parm '加入?yún)?shù) mycommand.ActiveConnection =
     
    cnn1 ' 指定該command 的當(dāng)前活動連接 mycommand.CommandText = " select * from employee where fname =? " mycommand.  
  26. CommandType = adCmdText '表明command 類型 Set rstByQuery = New ADODB.Recordset   
  27. Set rstByQuery = mycommand.Execute() i = 0 Do While Not rstByQuery.EOF ii = i + 1 ' i   
  28. 中保存記錄個數(shù) rstByQuery.MoveNext Loop MSFlexGrid1.Rows = i + 1 '動態(tài)設(shè)置MSFlexGrid的  
  29. 行和列 MSFlexGrid1.Cols = rstByQuery.Fields.count + 1 MSFlexGrid1.Row = 0 For i = 0 To  
  30. rstByQuery.Fields.count - 1 MSFlexGrid1.Col = i + 1 MSFlexGrid1.Text = rstByQuery.  
  31. Fields.Item(i).Name Next '設(shè)置第一行的標(biāo)題,用域名填充 i = 0 rstByQuery.Requery Do   
  32. While Not rstByQuery.EOF ii = i + 1 MSFlexGrid1.Row = i '確定行 For j = 0 To rstByQuery.  
  33. Fields.count - 1 MSFlexGrid1.Col = j + 1 MSFlexGrid1.Text = rstByQuery(j) '添充所有的列  
  34. Next rstByQuery.MoveNext Loop '這個循環(huán)用來填充MSFlexGrid的內(nèi)容 End Sub  

 

查詢部分可以用存儲過程以提高處理效率,減低網(wǎng)絡(luò)流量。本程序在NT WORKSTATION 4.0 SP4、SQL SERVER 7.0 上調(diào)試通過,上述的相關(guān)內(nèi)容就是對SQL Server單引號處理技巧的描述,希望會給你帶來一些幫助在此方面。

【編輯推薦】

  1. SQL Server數(shù)據(jù)庫中優(yōu)化索引的妙招
  2. SQL Server查詢優(yōu)化的好用方案
  3. 實(shí)現(xiàn)SQL Server動態(tài)游標(biāo)的創(chuàng)建步驟
  4. 如何實(shí)現(xiàn)SQL Server臨時表的創(chuàng)建?
  5. SQL Server數(shù)據(jù)庫如何正確加密?
責(zé)任編輯:佚名 來源: 搜狐IT
相關(guān)推薦

2022-03-23 14:04:32

SQL字符串數(shù)據(jù)類型

2022-05-19 23:40:34

SQL語句引號

2010-07-19 10:15:33

SQL Server2

2010-07-20 11:13:09

SQL Server日

2010-06-07 13:08:53

MySQL插入處理重復(fù)

2011-05-19 13:45:15

PHP單引號雙引號

2024-06-17 07:41:43

2010-07-19 10:08:56

SQL Server

2022-11-14 14:51:23

單引號雙引號Linux

2010-06-17 10:11:29

SQL Server文

2010-07-13 11:25:42

Perl雙引號

2010-07-20 15:24:27

MS SQL Serv

2010-07-01 11:57:55

SQL Server日

2021-10-14 06:51:55

Shell 單引號雙引號

2010-07-21 11:38:59

SQL Server重

2010-07-22 09:48:14

SQL Server全

2010-07-19 17:26:55

SQL Server

2010-07-21 12:24:45

SQL Server表

2010-07-23 15:09:42

SQL Server刪

2010-07-23 16:21:37

SQL Server重
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號