|
07.06.2017, 12:47 | #1 |
Участник
|
Заполнение varbinary поля вставкой записи через ODBCConnection
Всем привет!
Есть переменная - контейнер [xRecord], ей нужно заполнить поле Data в таблице ExternalTable во внешней БД. Реализация через ODBCConnection. X++: ... container = [xRecord]; odbcConnection = new OdbcConnection(LoginProperty); statement = odbcConnection.createStatement(); insertStr = strFmt('INSERT INTO [dbo].[EXTERNALTABLE] ([DATA]) VALUES (%1)', <?>); statement.executeUpdate(insertStr); Через BinData::dataToString(new ContainerClass([common]).toBlob()) теряется "0x" и делится на N строк. Сделал велосипед: strRem('0x'+BinData::dataToString(new ContainerClass([common]).toBlob()),'\n') А есть более корректное решение? |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
07.06.2017, 17:15 | #2 |
Участник
|
Если только '0x' перенести в переменную insertStr перед %1.
__________________
// no comments |
|
08.06.2017, 11:39 | #3 |
Участник
|
Удалось найти решение через SqlCommand:
X++: System.Data.SqlClient.SqlCommand sqlCommand; System.Data.SqlClient.SqlConnection sqlConnection; System.Data.SqlClient.SqlParameterCollection parameterCollection; System.Data.SqlClient.SqlParameter sqlParameter; System.IO.MemoryStream memoryStream; System.Byte[] bytes; ; sqlConnection = new System.Data.SqlClient.SqlConnection(<connection string>); sqlCommand = new System.Data.SqlClient.SqlCommand('INSERT INTO EXTERNALTABLE ([DATA]) VALUES (@Data)', sqlConnection); parameterCollection = sqlCommand.get_Parameters(); sqlParameter = parameterCollection.Add('@Data', System.Data.SqlDbType::VarBinary); memStream = Binary::constructFromContainer(new ContainerClass(<container>).toBlob()).getMemoryStream(); bytes = memStream.ToArray(); memStream.Close(); sqlParameter.set_Value(bytes); try { sqlConnection.Open(); sqlCommand.ExecuteNonQuery(); sqlConnection.Close(); } catch { info(CLRInterop::getLastException().ToString()); sqlConnection.Close(); } Последний раз редактировалось Товарищ ♂uatr; 08.06.2017 в 11:49. |
|
|
За это сообщение автора поблагодарили: mazzy (2), S.Kuskov (2). |
|
|