成人免费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單引號雙引號

2024-06-17 07:41:43

2010-07-19 10:08:56

SQL Server

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-22 09:48:14

SQL Server全

2010-07-13 11:25:42

Perl雙引號

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-23 16:21:37

SQL Server重
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区在线视频 | 国产成人精品一区二区三区在线观看 | 狠狠干综合视频 | 污免费网站 | 天天综合天天 | 祝你幸福电影在线观看 | 亚洲欧美精品在线观看 | 精品91久久| 亚洲天堂一区 | 精品成人av | 国产精品成人一区二区 | 免费成人在线网站 | 中文字幕第一页在线 | 亚洲综合一区二区三区 | 黄色片大全在线观看 | 日本成人片在线观看 | 日韩欧美一区二区三区免费观看 | 99九九久久 | 91色在线视频 | 噜噜噜噜狠狠狠7777视频 | 久久久精品亚洲 | 久久高清| 午夜精品一区二区三区在线视频 | 365夜爽爽欧美性午夜免费视频 | 日本一二三区高清 | 日日夜夜精品视频 | 国产精品看片 | 国产精品视频一二三区 | 一级大片 | 国产精品观看 | 日韩高清一区二区 | 精产国产伦理一二三区 | 九九亚洲 | 在线观看视频一区二区三区 | 美女在线观看国产 | 欧美人成在线视频 | 一级毛片成人免费看a | 欧美一区免费 | 91精品国产综合久久久久久丝袜 | 日韩视频成人 | 91综合网 |