|
|
#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). | |
|
|
#2 |
|
Участник
|
Если только '0x' перенести в переменную insertStr перед %1.
__________________
// no comments |
|
|
|
|
#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). | |
|
|
|