请尝试一下这个与VB.NETOracle相关的示例,并帮助我使用String.Format
如果数据库不是Oracle,则是MS SQl 2008。 我的任务:如果是Oracle,则在调用存储过程时再添加两个参数 生成Oracle和MSFT存储过程;Oracle One有3个额外参数:请尝试一下这个与VB.NETOracle相关的示例,并帮助我使用String.Format,vb.net,oracle,stored-procedures,string-formatting,Vb.net,Oracle,Stored Procedures,String Formatting,如果数据库不是Oracle,则是MS SQl 2008。 我的任务:如果是Oracle,则在调用存储过程时再添加两个参数 生成Oracle和MSFT存储过程;Oracle One有3个额外参数: Vret_val out number, Vparam2 in out number, Vparam3 in out number, ... the rest (实际名称不是Vparam2和Vparam3,但这并不重要)。 因此,调用存储过程的帮助器VB.Net类的代码: Imports System
Vret_val out number,
Vparam2 in out number,
Vparam3 in out number,
... the rest
(实际名称不是Vparam2和Vparam3,但这并不重要)。
因此,调用存储过程的帮助器VB.Net类的代码:
Imports System.Data.Odbc
Imports System.Configuration
Dim objCon As OdbcConnection = Nothing
Dim objAdapter As OdbcDataAdapter
Dim cmdCommand As New OdbcCommand
Dim objDataTable As DataTable
Dim sconnection As String
Try
sconnection = mConnectionString
objAdapter = New OdbcDataAdapter
objCon = New OdbcConnection(sconnection)
objCon.Open()
objAdapter.SelectCommand = cmdCommand
objAdapter.SelectCommand.Connection = objCon
objAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
objAdapter.SelectCommand.CommandTimeout = Globals.mReportTimeOut
If Not mIsOracle Then
objAdapter.SelectCommand.CommandText = String.Format("{{call {0}}}", spName)
Else
Dim returnValue As New OdbcParameter
returnValue.Direction = ParameterDirection.Output
returnValue.ParameterName = "@Vret_val"
returnValue.OdbcType = OdbcType.Numeric
objAdapter.SelectCommand.Parameters.Add(returnValue)
objAdapter.SelectCommand.CommandText = String.Format("{{call {0}(?)}}", spName)
End If
Try
objDataTable = New DataTable(spName)
objAdapter.Fill(objDataTable)
Catch ex As Exception
...
问题:我对String.Format(“{{call{0}(?)}}”,spName)
的作用感到困惑,特别是(?)
部分。我对String.Format的理解是,它将用spName简单地替换{0}。{{
、}
和(?)
确实让我感到厌烦,因为{
提醒我格式化,(?)
提示一些高级正则表达式的使用
不幸的是,我没有从一个关键人物那里得到什么帮助,他正在度假,没有皮带[智能]手机
我猜我只是为每个额外的参数再添加5行,然后将String.Format({call{0}(?)},spName)
更改为String.Format({{call{0}(?,?)}),spName)
。我忘了说我是“盲目地”编码的——我有一个编译器可以帮助我,但没有设置环境来测试这一点
这将在几天后结束,但我需要尽我最大的努力按时完成:)
谢谢。String.Format({call{0}(?)},spName)
将生成如下字符串:“{call ProcName(?)}”
(假设spName
包含字符串ProcName
)。{{
和}}如果要包含{code>或},则需要使用{`在字符串中,而不将其作为格式的一部分
文件中提到了这一点:
前后撑杆
字符“{”和“}”是必需的。
指定单个文字大括号的步骤
字符格式,指定两个字符
前后大括号字符;
即“{{”或“}}”
(?)
对于string.Format
函数没有什么特殊的意义,但是在执行给定的过程时将使用它,每个问号表示应该传递给过程的参数。string.Format({{call call{0}(?)},spName)
将生成如下字符串:“{call ProcName(?)}”
(假设spName
包含字符串ProcName
)。如果希望在字符串中包含
{或'}},而不将其作为格式的一部分,则需要使用{
和'}}
文件中提到了这一点:
前后撑杆
字符“{”和“}”是必需的。
指定单个文字大括号的步骤
字符格式,指定两个字符
前后大括号字符;
即“{{”或“}}”
(?)
对于string.Format
函数没有什么特殊的意义,但是在执行给定的过程时将使用它,每个问号表示应该传递给过程的参数。谢谢……但是(?)
会发生什么情况呢?再次感谢……现在,关于(?)的含义
-这是一个猜测。我必须再添加两个,所以应该是(?)
,(?,?,?)
,(?)(?)(?)(?)
,(?),(?),(?)
,还是其他什么?这个后续问题对每个人都开放。没有测试过,我会猜第二个选项:(?,,,?,,?)
。谢谢……但是(?)会发生什么事呢
?再次感谢…现在,关于(?)
的含义,这是一个猜测。我必须再添加两个,那么应该是(?)
,(?,?,?)
,(?)(?)(?)
,(?),(?),(?)
,还是其他什么?这个后续问题对每个人都是开放的。在没有测试的情况下,我猜第二个选项:(?,,?,,?)
。