国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - MS-SQL Server 中單引號的兩種處理方法

MS-SQL Server 中單引號的兩種處理方法

2019-10-24 17:22mssql教程網 Sql Server

和數據庫打交道要頻繁地用到SQL語句,除非你是全部用控件綁定的方式,但采用控件綁定的方式存在著靈活性差、效率低、功能弱等等缺點。因此,大多數的程序員極少或較少用這種綁定的方式。而采用非綁定方式時許多程序員大

和數據庫打交道要頻繁地用到 SQL 語句,除非你是全部用控件綁定的方式,但采用控件綁定的方式存在著靈活性差、效率低、功能弱等等缺點。因此,大多數的程序員極少或較少用這種綁定的方式。而采用非綁定方式時許多程序員大都忽略了對單引號的特殊處理,一旦SQL語句的查詢條件的變量有單引號出現,數據庫引擎就會報錯指出SQL語法不對,本人發現有兩種方法可以解決和處理這種單引號的問題(以VB為例子)。 

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

復制代碼代碼如下:

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參數是你的SQL字符串。函數一旦發現字符串中有單引號出現,就在前面補上一個單引號。 
---- 方法二:利用數據對象中的參數。可以利用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語法如下: 

update employee set fname=“ Paolo''''f“ 
where emp_id='PMA42628M' 
update employee set fname=“ Paolo''f“ 
where emp_id='PMA42628M' 

---- 程序如下: 
---- 首先把前面的函數加入。 

---- 在窗體的通用中聲明如下變量: 

Dim cnn1 As ADODB.Connection '連接 
Dim mycommand As ADODB.Command '命令 
Dim rstByQuery As ADODB.Recordset '結果集 
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“ ' 
沒有系統數據源使用連接字符串 

'strCnn = “DSN=mydsn;UID=sa;PWD=;“ 
'DATABASE=pubs;Driver={SQL Server};SERVER=gzl_pc“ ' 
如果系統數據源MYDSN指向PUBS數據庫,也可以這樣用 
cnn1.Open strCnn, , , 0 '打開連接 
End Sub 
Private Sub Command1_Click() '演示字符處理 
Dim i As Integer 
Dim j As Integer 
Set parm = New ADODB.Parameter 
Set mycommand = New ADODB.Command 

Dim str As String 
str = Combo1.Text 
str = ProcessStr (str) 
mycommand.ActiveConnection = cnn1 ' 
指定該command 的當前活動連接 
mycommand.CommandText = “ select * from 
employee where fname = '“ & str & “'“ 
mycommand.CommandType = adCmdText '表明command 類型 
Set rstByQuery = New ADODB.Recordset 
Set rstByQuery = mycommand.Execute() 
i = 0 
Do While Not rstByQuery.EOF 
i = i + 1 ' i 中保存記錄個數 
rstByQuery.MoveNext 
Loop 
MSFlexGrid1.Rows = i + 1 '動態設置MSFlexGrid的行和列 
MSFlexGrid1.Cols = rstByQuery.Fields.count + 1 
MSFlexGrid1.Row = 0 
For i = 0 To rstByQuery.Fields.count - 1 
MSFlexGrid1.Col = i + 1 
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name 
Next '設置第一行的標題,用域名填充 

i = 0 
'Set rstByQuery = mycommand.Execute() 
rstByQuery.Requery 
Do While Not rstByQuery.EOF 
i = i + 1 
MSFlexGrid1.Row = i '確定行 
For j = 0 To rstByQuery.Fields.count - 1 
MSFlexGrid1.Col = j + 1 
MSFlexGrid1.Text = rstByQuery(j) '添充所有的列 
Next 
rstByQuery.MoveNext 

Loop '這個循環用來填充MSFlexGrid的內容 
End Sub 
Private Sub Command2_Click()'參數方法 
Dim i As Integer 
Dim j As Integer 

Set parm = New ADODB.Parameter 
Set mycommand = New ADODB.Command 

' parm_jobid.Name = “name1“ this line can be ommited 
parm.Type = adChar '參數類型 
parm.Size = 10 '參數長度 
parm.Direction = adParamInput '參數方向,輸入或輸出 
parm.Value = Combo1.Text '參數的值 
mycommand.Parameters.Append parm '加入參數 
mycommand.ActiveConnection = cnn1 ' 
指定該command 的當前活動連接 
mycommand.CommandText = “ select * 
from employee where fname =? “ 
mycommand.CommandType = adCmdText '表明command 類型 
Set rstByQuery = New ADODB.Recordset 
Set rstByQuery = mycommand.Execute() 
i = 0 
Do While Not rstByQuery.EOF 
i = i + 1 ' i 中保存記錄個數 
rstByQuery.MoveNext 
Loop 
MSFlexGrid1.Rows = i + 1 '動態設置MSFlexGrid的行和列 
MSFlexGrid1.Cols = rstByQuery.Fields.count + 1 
MSFlexGrid1.Row = 0 
For i = 0 To rstByQuery.Fields.count - 1 
MSFlexGrid1.Col = i + 1 
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name 
Next '設置第一行的標題,用域名填充 

i = 0 
rstByQuery.Requery 
Do While Not rstByQuery.EOF 
i = i + 1 
MSFlexGrid1.Row = i '確定行 
For j = 0 To rstByQuery.Fields.count - 1 
MSFlexGrid1.Col = j + 1 
MSFlexGrid1.Text = rstByQuery(j) '添充所有的列 
Next 
rstByQuery.MoveNext 

Loop '這個循環用來填充MSFlexGrid的內容 
End Sub 

---- 查詢部分可以用存儲過程以提高處理效率,減低網絡流量。 
---- 本程序在NT WORKSTATION 4.0 SP4、SQL SERVER 7.0 上調試通過

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九综合九九 | 日韩欧美手机在线 | 青青草在线视频免费观看 | 亚洲毛片在线 | 糈精国产xxxx在线观看 | 午夜av一区二区 | 毛片黄片 | 一区二区三区高清 | 精品无码久久久久国产 | 国产高清视频在线观看 | 中文字幕 国产 | 国产精品久久久久久久久久新婚 | 日韩一区二| 久久亚洲一区 | 三区视频 | 婷婷色综合 | 欧美一区二区精品 | 91激情视频| 99精品欧美一区二区三区综合在线 | 午夜精品在线 | 高清在线一区二区 | 欧美国产精品一区二区三区 | 国产一区中文字幕 | 夜夜爽99久久国产综合精品女不卡 | 丁香综合 | 伊人久久综合精品一区二区三区 | 亚洲精品九九 | 亚洲精品1区 | 国产精品一区二区不卡 | 久久男人网 | av网站观看 | 不卡的免费av | 九色av | 综合激情网 | 中文字幕在线免费看 | 免费黄色在线观看 | 成人免费在线观看 | 亚洲精品乱码久久久久久按摩观 | 国产精品久久久久久久久久ktv | 久久99精品久久久久久久青青日本 | 欧美喷潮久久久xxxxx |