Oracle и db.CreateParameters
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 29.04.08 11:53
Оценка:
Непойму чего не так с CreateParameters:

public class MessageData
{
 [MapField("CALL_ID")]
 public string CallID;

 [MapField("FROM_IP")]
 public string FromIP;
 
 [MapField("CALL_DATE")]
 public DateTime CallDate;
}

DbManager.AddDataProvider(new OracleDataProvider());
DbManager.AddConnectionString("Oracle", "Data Source=new;User ID=user;Password=password;");

MessageData msg = new MessageData();
msg.CallID = "lsakxnsaljknsalk";
msg.FromIP = "192.168.1.78";
msg.CallDate = DateTime.Now;

using(DbManager db = new DbManager())
{
  db
     .SetCommand(@"
      INSERT INTO SUP_AUDIO_MESSAGE
        ( ID, CALL_ID, FROM_IP, CALL_DATE ) 
      VALUES 
            ( SUP_AUDIO_SEQ.NEXTVAL, @CALL_ID, @FROM_IP, @CALL_DATE )",
      db.CreateParameters(msg))
     .ExecuteNonQuery();
}

выдает:

BLToolkit.Data.DataException was unhandled
Message="ORA-01036: illegal variable name/number\n"
Source="testBLTookit"
StackTrace:
в testBLTookit.Program.Main(String[] args) в C:\PROJECTS\CS\tests\testBLTookit\Program.cs:строка 60
в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()


Если заменить @CALL_ID, @FROM_IP, @CALL_DATE на строки с параметрами, а db.CreateParameters(msg) выбросить, то все вставляется без ошибок. Таже самая db.CreateParameters(msg) для того же класса с MSSQL проходит без ошибок. Как полечить и в чем тут дело?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.