成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

利用轉義字符處理SQL語句。下面的函數可以在執行SQL語句前調用,執行處理后的結果即可產生正確的結果。

 

  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參數是你的SQL字符串。函數一旦發現字符串中有SQL Server單引號出現,就在前面補上一個單引號。

 

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

 

利用數據對象中的參數。可以利用ADODB.COMMAND對象,把含有單引號的字符串傳遞給COMMAND,然后執行查詢等操作即可。

 

以上兩種方法比較,方法一增加了系統處理時間,方法二簡潔、高效,如果采用存儲過程,然后再傳遞參數給存儲過程,存儲過程是預編譯的,這樣系統的效率更高。

 

 

下面就舉例子加以說明。

 

 

新建一個項目,項目中有一個窗體(Form1),兩個命令按鈕,一個MSFlexGrid,名稱分別為:Command1,Command2,MSFlexGrid1,一個COMBOX(COMBO1),它的內容預先設定為“Paolo'f”、“Paolo'f”。Command1演示方法一,Command2演示方法二,MSFlexGrid1存儲方法二查詢(SELECT)結果。

對于其他的SQL操作(INSERT、DELTER、UPDATAE)方法極為類似,筆者就不再贅述。例子中用到SQL SERVER中的PUBS數據庫中的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' 

程序如下:

 

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

 

 

  1. Dim cnn1 As ADODB.Connection '連接 Dim mycommand As ADODB.Command '命令   
  2. Dim rstByQuery As ADODB.Recordset '結果集 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. 沒有系統數據源使用連接字符串 'strCnn = "DSN=mydsn;UID=sa;PWD=;" 'DATABASE=pubs;  
  6. Driver={SQL Server};SERVER=gzl_pc" ' 如果系統數據源MYDSN指向PUBS數據庫,  
  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 的當前活動連接 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 中保存記錄個數 rstByQuery.MoveNext Loop MSFlexGrid1.  
  15. Rows = i + 1 '動態設置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 '設置第一行的標題,用域名填充 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. 這個循環用來填充MSFlexGrid的內容 End Sub Private Sub Command2_Click()'參數方法 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. 參數類型 parm.Size = 10 '參數長度 parm.Direction = adParamInput '參數方向,輸入或輸出  
  25. parm.Value = Combo1.Text '參數的值 mycommand.Parameters.Append parm '加入參數 mycommand.ActiveConnection =
     
    cnn1 ' 指定該command 的當前活動連接 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. 中保存記錄個數 rstByQuery.MoveNext Loop MSFlexGrid1.Rows = i + 1 '動態設置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 '設置第一行的標題,用域名填充 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 '這個循環用來填充MSFlexGrid的內容 End Sub  

 

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

【編輯推薦】

  1. SQL Server數據庫中優化索引的妙招
  2. SQL Server查詢優化的好用方案
  3. 實現SQL Server動態游標的創建步驟
  4. 如何實現SQL Server臨時表的創建?
  5. SQL Server數據庫如何正確加密?
責任編輯:佚名 來源: 搜狐IT
相關推薦

2022-03-23 14:04:32

SQL字符串數據類型

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插入處理重復

2011-05-19 13:45:15

PHP單引號雙引號

2010-07-19 10:08:56

SQL Server

2024-06-17 07:41:43

2010-06-17 10:11:29

SQL Server文

2022-11-14 14:51:23

單引號雙引號Linux

2010-07-01 11:57:55

SQL Server日

2010-07-20 15:24:27

MS SQL Serv

2010-07-21 11:38:59

SQL Server重

2010-07-13 11:25:42

Perl雙引號

2010-07-22 09:48:14

SQL Server全

2021-10-14 06:51:55

Shell 單引號雙引號

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-09 14:23:10

SQL Server圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97av在线 | 国产精品久久久久久久久久久久午夜片 | 久久一区视频 | 91麻豆产精品久久久久久 | 欧美 日韩 在线播放 | 国产精品自拍一区 | 国产成人精品久久 | 天天摸天天看 | 99精品视频网 | 精品一区二区久久久久久久网精 | 成人福利片 | 亚洲一区二区久久久 | 一区二区三区在线 | 在线欧美视频 | 国产成人综合一区二区三区 | 日韩中文字幕一区 | 九九久久精品视频 | 毛片一级网站 | 久久久国产一区二区三区 | 日韩欧美在线一区二区 | 欧美一极视频 | 日韩精品一区二区三区免费观看 | 日韩一区二区三区av | 亚洲欧美日韩激情 | www国产成人免费观看视频,深夜成人网 | 日韩三级电影在线看 | 午夜成人免费电影 | 中文字幕在线精品 | 欧美日韩国产一区 | 欧美日韩在线综合 | 精品二区 | 久久人人爽人人爽人人片av免费 | 日本午夜视频 | 久久a久久 | 婷婷在线免费 | 国产ts人妖系列高潮 | 欧美freesex黑人又粗又大 | 久草.com | 亚洲一区二区精品视频在线观看 | 日韩成人免费视频 | av黄色在线|