Oracle数据库绑定变量特性及应用
4. 绑定变量在应用开发环境下的使用;
4.1 在VB.Net or ASP.NET and VB中的的使用
建议用Oracleclient DB的连接方法,OleDB不支持;下面是使用
OracleClient连接的使用例子(这个代码执行只需要2秒不到);
Begin
Dim cn01 As New OracleConnection
Dim CMD01 As New OracleCommand
Dim Cmd As New OleDbCommand
Dim i As Integer
Try
<add key="DBCONN_SFCFA" value="User ID=sfcfa;password=SFCFA;Data Source=CIM;" />
xConnStr = System.Configuration.ConfigurationSettings.AppSettings("DBCONN_SFCFA"

'cn01.ConnectionString()
cn01.ConnectionString = xConnStr
cn01.Open()
TextBox1.Text = Now
Application.DoEvents()
xSql = "insert into t values(:username,:userid,sysdate) "
For i = 1 To 1000
CMD01 = New OracleClient.OracleCommand(xSql, cn01)
CMD01.CommandType = CommandType.Text
CMD01.Parameters.Add("username", "test" + CStr(i))
CMD01.Parameters.Add("userid", i)
CMD01.ExecuteNonQuery()
CMD01.Parameters.Clear()
Next i
TextBox2.Text = Now
Catch ex As OleDbException
MsgBox(ex.Message)
Catch ex As Exception
MsgBox(ex.HelpLink + ex.Message)
End Try
End.
OleDB(VB,ASP等)不支持绑定变量,或者我没有找到更好的方法去实现它;它有变量的概念但不支持绑定;网络上,有很多帖子说;他实现了绑定变量用VB or ASP;我按照他们的方法去试,发现他们与单纯传参数没有什么区别,请看下面的内容;
OleDB(这个执行需要5秒
:Dim xConnStr, xSql As String
Dim Cn As New OleDbConnection
Dim cn01 As New OracleConnection
Dim CMD01 As New OracleCommand
Dim Cmd As New OleDbCommand
Dim i As Integer
Try
<add key="DBCONN_SFCFA" value="Provider=MSDAORA.1;User ID=sfcfa;password=SFCFA;Data Source=CIM;"/>
xConnStr = System.Configuration.ConfigurationSettings.AppSettings("DBCONN_SFCFA"

'Cn.ConnectionString()
Cn.ConnectionString = xConnStr
Cn.Open()
TextBox1.Text = Now
Application.DoEvents()
xSql = "insert into t values(?,?,sysdate) "
For i = 1 To 1000
Cmd = New OleDbCommand(xSql, Cn)
Cmd.CommandType = CommandType.Text
Cmd.Parameters.Add("username", "test" + CStr(i))
Cmd.Parameters.Add("userid", i)
Cmd.ExecuteNonQuery()
Cmd.Parameters.Clear()
Next i
TextBox2.Text = Now
Catch ex As OleDbException
MsgBox(ex.Message)
Catch ex As Exception
MsgBox(ex.HelpLink + ex.Message)
End Try
VB or ASP(耗时也是5秒左右…):
Private Sub Command1_Click()
Dim sConn As String
Dim BVCS_CN As ADODB.Connection
'Dim BVCS as ADODB.
Dim xCMD As ADODB.Command
Dim xPre As ADODB.Parameter
Dim xSql As String
Dim xSql01 As String
Dim xRS As ADODB.Recordset
On Error GoTo 1
SetDBConnection = True
Set BVCS_CN = New ADODB.Connection
'BVCS_CN.Provider = "MSDAORA"
'sConn = "DATA SOURCE=" & ServerName & ";"
sConn = "Provider=MSDAORA.1;Password=sfcfa;User ID=sfcfa;Data Source=cim;"
With BVCS_CN
.Open sConn
End With
If BVCS_CN.State = 0 Then
MsgBox "DB Connection is error"
Exit Sub
End If
Text1.Text = Now
DoEvents
Set xCMD = New ADODB.Command
Dim xTest As String
Set xPre = New ADODB.Parameter
'BVCS_CN
For i = 1 To 1000
With xCMD
.ActiveConnection = BVCS_CN
.CommandText = " Insert into TT(username,userid) values(?,?) "
.CommandType = adCmdText
.Parameters.Append .CreateParameter("username", adBSTR, adParamInput, 30, "test" + CStr(i))
.Parameters.Append .CreateParameter("userid", adInteger, adParamInput, 4, i)
.Prepared = True
.Execute
End With
xCMD.Parameters.Delete 1
xCMD.Parameters.Delete 0
Next i
Set xCMD = Nothing
Text2.Text = Now
Exit Sub
1:
Set xCMD = Nothing
MsgBox Error$
For Each objErr In BVCS_CN.Errors
MsgBox objErr.Description
Next
BVCS_CN.Errors.Clear
Exit Sub
Resume Next
End Sub
4.2 在Delphi中的使用情况;
这里特殊说明, Borland Delphi 4.0以上的版本已经开始完全支持绑定变量的概念,因此,它执行数据库的查询效率要好于其他开发工具;执行的结果不到2秒;
procedure TForm1.Button1Click(Sender: TObject);
Var
i :Integer;
begin
edit1.text:=DatetimeToStr(now);
For i := 1 to 1000 do
//Begin
With Query1 do
Begin
close;
Sql.clear;
Sql.add('Insert into t Values(:username,:user_id,sysdate) ');
ParamByName('username').AsString :='test' ;
ParamByName('user_id').AsInteger :=i ;
execSql;
End;
//end;
//edit2.text:=DateToStr(now);
edit2.text:=DatetimetoStr(now);
end;
4.3. 在Java中的使用绑定变量
String v_id = 'xxxxx';
String v_sql = 'select name from table_a where id = ? '; //嵌入绑定变量
stmt = con.prepareStatement( v_sql );
stmt.setString(1, v_id ); //为绑定变量赋值
stmt.executeQuery();
在Java中,结合使用setXXX 系列方法,可以为不同数据类型的绑定变量进行赋值,从而大大优化了SQL 语句的性能。
4.4 C#同VB.NET ,这里不在赘述;
0
相关文章