Oracle插入中缺少逗号

时间:2020-10-06 10:05:06

标签: sql database oracle powershell

我必须借助powershell skript从证书中提取一些数据,然后将这些数据插入到oracle数据库中。

现在我似乎在使用oracle语法时遇到了一些问题,因为某些数据包含逗号和双引号。 我的代码(扣除)如下:

Add-Type -Path "C:\Program Files (x86)\oracle\instantclient_odac_12_32\odp.net\managed\common\Oracle.ManagedDataAccess.dll"

$CRTARR = Get-ChildItem Cert:\CurrentUser\My #just for testing purposes

$date = $CRTARR[0].NotAfter 

$ActiveConnection = [Oracle.ManagedDataAccess.Client.OracleConnection]::new()
$ActiveConnection .ConnectionString = "Data Source=SOURCE;User USER;Password=PASSWORD"

    $eins = $CRTARR[0].SerialNumber

    
    $zwei ="'"+ $CRTARR[0].Issuer +"'"

    $String = $CRTARR[0].Subject
    $SSTRING = @($String.Split('"'))
    $FINAL ="'"+ $SSTRING[0] + "'" + '"' + $SSTRING[1] + '"' + "'" + $SSTRING[2] + "'"


    $drei = $FINAL

    $vier = $Date.ToString("MM\/dd\/yyyy hh:mm:ss")

    $fuenf = "0"

    $sechs = $CRTARR[0].Subject -replace "[^0-9]"
    $sechs = $sechs.trim('0')

$query = "insert into TABLENAME (VALUEONE, VALUETWO, VALUETHREE, VALUEFOUR, VALUEFIVE, VALUESIX) values (" + $eins + " , " + $zwei +" , "+ $drei +" , "+ $vier +" , "+ $fuenf +" , "+ $sechs +")" 

$ActiveConnection.open()
$command = $ActiveConnection.CreateCommand()
$command.CommandType = [System.Data.CommandType]::Text
$command.CommandText = $query

$command.ExecuteNonQuery()

查询看起来像这样

echo $query
insert into TABLENAME (VALUEONE, VALUETWO, VALUETHREE, VALUEFOUR, VALUEFIVE, VALUESIX) values (0C87B3 , "CN=SOMECN, OU=OU WITH SPACES, O=ORGANIZATION WITH SPACES, C=DE" , "SERIALNUMBER=NUMBER, SN=
NAME, G=NAME, CN='"NAME, USER"', O=ORGANIZATION WITH SPACES, C=DE" , 07/02/2027 09:49:35 , 0 , 98915)

(我检查了代码,但格式相同。)

Oracle抛出以下错误

ORA-00917:缺少逗号

现在我找不到丢失的逗号,有人可以帮忙吗?

预先感谢

1 个答案:

答案 0 :(得分:2)

您应该始终使用参数。 (Why?

$query = @"
insert into TABLENAME (VALUEONE, VALUETWO, VALUETHREE, VALUEFOUR, VALUEFIVE, VALUESIX)
values (:eins, :zwei, :drei, :vier, :fuenf, :sechs)
"@

$command.Parameters.Add("eins", $eins)
$command.Parameters.Add("zwei", $zwei)
$command.Parameters.Add("drei", $drei)
$command.Parameters.Add("vier", $vier)
$command.Parameters.Add("fuenf", $fuenf)
$command.Parameters.Add("sechs", $sechs)

这还将解决引号和逗号引起的问题。