尝试将二进制字段设置为null会给我一个ArgumentNull异常.我可以像这样将字段设置为空,new Binary(new byte[] {});但这不是空的只是一个空列.是否有使用LinqToSql的解决方法?
我有一个存储在MSSQL中的位图图像,该列的数据类型是varbinary(3072).我想用PHP中的图像做的就是显示它并将其存储到文件中.怎么做?
无法在Google上找到任何有用的内容,也无法在此处找到.我发现的只有一些框架的使用 - 这不是我想要的.
这是一个示例图像:
0x444453207C0000000710080010000000100000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000400000044585431000000000000000000000000000000000000000000000000000000000000000000000000000000001B021A02555555551B021A02555555551B021A02555555551B021A02555555559DBFA7110D3FD555FFFF115E02080F05FEDF4E03C0A0E070555DE819635EFAC3F69DE609DC706BEFFCBFA4010B0BADDDFBC74F4458B808A8B475271A60ACA67757AFA9335F7E5456ED3345091BA280A058972C3BE063E9F5104D683A55FD8383
Run Code Online (Sandbox Code Playgroud) 在SQL Server(2008 R2)中,而不是这样做:
DECLARE @testVar VARBINARY(64);
Run Code Online (Sandbox Code Playgroud)
我想这样做:
DECLARE @varSize INT;
SET @varSize = 64;
DECLARE @testVar VARBINARY(@varSize);
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
'@varSize'附近的语法不正确.
我该怎么做这样的事情或强制SQL来评估@varSize?
我们面临一个非常奇怪的问题.
当表列如下时,我们的mssql 2008 R2 db中有一个表:
和userName列是唯一的
我们再次对表格执行以下查询:
insert into table_name (userId, userName, userType) values ( 1 , 0x5942C803664B00, 0)
Run Code Online (Sandbox Code Playgroud)
在该查询之后,我们执行以下查询:
insert into table_name (userId, userName, userType) values ( 2 , 0x5942C803664B, 0)
Run Code Online (Sandbox Code Playgroud)
我们得到以下错误:
无法在对象'table_name'中插入具有唯一索引'table_name _userName_u'的重复键行.
虽然0x5942C803664B和0x5942C803664B00是不同的值?
任何的想法 ?
以下查询的语义是什么?
UPDATE table
SET column .WRITE(NULL, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)
如果column是VARBINARY(max)类型,其内容不是NULL?
快速测试表明查询是无操作的:
--DROP TABLE [table]
CREATE TABLE [table] ([column] VARBINARY(max))
INSERT INTO [table] VALUES (0x12345678)
UPDATE [table]
SET [column] .WRITE(NULL, NULL, NULL)
SELECT * FROM [table]
Run Code Online (Sandbox Code Playgroud)
执行它不会改变数据column.但是,我似乎无法在文档中找到证据.我是否忽略了某些事情,或者这种无操作行为是否可能改变?
我正在尝试将此字节数组插入到 SQL Server 数据库中,列数据类型是varbinary,这是我在 C# 中的代码
SqlParameter param = new SqlParameter("@buffer", SqlDbType.VarBinary, 8000);
param.Value = buffer;
string _query = "INSERT INTO [dbo].[Files] (FileID, Data, Length) VALUES ('" + uID + "','" + buffer + "','" + buffer.Length + "')";
using (SqlCommand comm = new SqlCommand(_query, conn))
{
comm.Parameters.Add(param);
try
{
conn.Open();
comm.ExecuteNonQuery();
}
catch (SqlException ex)
{
return Request.CreateResponse(HttpStatusCode.OK, "Something went wrong : " + ex.Message);
}
finally
{
conn.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
我也在字符串@buffer内部_query而不是缓冲区中尝试过,但我不断收到错误消息:
不允许从 …
我有以下问题 - 我正在尝试保存byte[]到数据库,但我发现它仅适用于一个字节。
我有一些浮点数可以转换为 byte[] 并将其用作参数:
param = new SqlParameter(name, type, ((byte[])value).Length);
Run Code Online (Sandbox Code Playgroud)
类型是VarBinary,值是字节数组。
我将该参数添加到 my 中SqlCommand,就在它被执行之前,整个字节数组“位于”该参数中,并且_msize该参数是正确的(我认为 20 字节为 20 字节是正确的)。我的 SQL Server 显示我只保存了 1 个字节,也试图检索它我只得到一个字节。我的专栏是VarBinary(200)。
有什么建议?
我正在尝试在 Phinx 中创建一个迁移,它将在 MySQL 数据库中创建一个 varbinary 类型字段来存储一个 ip_address。
这就是我所拥有的:
$table = $this->table('my_table');
$table->addColumn('ip_address', 'varbinary', ['after' => 'id', 'limit' => 16])
->save();
Run Code Online (Sandbox Code Playgroud)
然而,这只是返回:
[InvalidArgumentException]
为列“ip_address”指定了无效的列类型“varbinary”。
我尝试使用“二进制”,但这最终变成了 BLOB。:/
我想在 mysql 中使用 AES 加密文本,但我有一个小问题,因为您需要使用 varbinary 来存储这些。
我的一些数据类型是 varchar,是的,我可能可以为这些计算出我的 varbinary 的长度。然而,对于我的地址字段,我使用 TEXT 数据类型,因为我们存储了中文地址,而且这些地址可能很长。我使用 TEXT 数据类型是因为您不需要在 mysql 中指定长度。
问题是,使用 varbinary 时,您需要指定长度,而我真的不知道长度,因为地址可以是任意长度。
是否有某种二进制数据类型可以用于 AES,而不必指定数据的长度?
我有一个很长的字符串,我想将它半唯一地表示为一个 bigint。理想情况下,我只取散列,但presto 散列函数似乎想要返回“varbinary”,而且我找不到将 varbinary 转换为 bigint 的函数。
如果我写:
cast(xxhash64(cast('asdf' as varbinary)) as bigint)
我收到一条错误消息,说我无法将 varbinary 转换为 bigint。
varbinary ×10
sql-server ×4
c# ×3
sql ×3
mysql ×2
aes ×1
asp.net ×1
bytearray ×1
declare ×1
duplicates ×1
encryption ×1
hash ×1
linq-to-sql ×1
migration ×1
phinx ×1
php ×1
presto ×1
t-sql ×1
text ×1
trino ×1
varbinarymax ×1
variables ×1