标签: varbinarymax

不允许从数据类型nvarchar到varbinary(max)的隐式转换

当我尝试将DBNull.Value插入可空的 varbinary(max)字段时,我得到此异常:

Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.
Run Code Online (Sandbox Code Playgroud)

那是我的代码:

  insertCMD.Parameters.AddWithValue("@ErrorScreenshot", SqlDbType.VarBinary).Value = DBNull.Value;
Run Code Online (Sandbox Code Playgroud)

我知道在SO上存在重复的问题,但我不像其他人那样使用任何字符串.

我错了什么?

更新:

using (var insertCMD = new SqlCommand("INSERT INTO TestplanTeststep (TeststepId,TestplanId,CreatedAt,ErrorText,ErrorScreenshot,TestState) VALUES (@TeststepId, @TestplanId,@CreatedAt,@ErrorText,@ErrorScreenshot,@TestState)", con))
{
 var p1 = insertCMD.Parameters.Add("@TeststepId", SqlDbType.Int);
 var p2 = insertCMD.Parameters.Add("@CreatedAt", SqlDbType.DateTime);
 insertCMD.Parameters.AddWithValue("@TestplanId", testplan.Id);
 insertCMD.Parameters.AddWithValue("@ErrorText", (object) DBNull.Value);
 insertCMD.Parameters.AddWithValue("@ErrorScreenshot", (object) DBNull.Value);
 insertCMD.Parameters.AddWithValue("@TestState", (int)Teststep.TeststepTestState.Untested);

       foreach (Teststep step in teststeps)
        {
           p1.Value = step.Id;
           p2.Value = step.CreatedAt;
           insertCMD.ExecuteNonQuery();
        }
     }
Run Code Online (Sandbox Code Playgroud)

sql dbnull insert varbinarymax

14
推荐指数
2
解决办法
5万
查看次数

从SQL Server中检索varbinary(MAX)到C#中的byte []

我试图varbinary(MAX)从SQL Server到byte[]C#中的变量.

我怎样才能做到这一点?

谢谢

c# byte sql-server-2008 varbinarymax

10
推荐指数
1
解决办法
2万
查看次数

如何在SQL Server 2008中将Excel文件插入/检索到varbinary(max)列?

我正在尝试将Excel文件保存到数据库中,我不想使用文件流,因为它需要有一个服务器.

那么如何在具有类型列的表中插入/更新/选择varbinary(max)

.net c# excel-interop sql-server-2008 varbinarymax

9
推荐指数
1
解决办法
2万
查看次数

SQL Server 2008 R2 Varbinary Max Size

在SQL Server 2008 R2中,我可以使用varbinary(max)插入文件的最大大小是多少?我试图将列中的最大值更改为超过8,000字节,但它不会让我,所以我猜测最大值是8,000字节,但是从MSDN上的这篇文章中,它说最大存储大小为2 ^ 31-1字节:

varbinary [(n | max)]

可变长度的二进制数据.n可以是1到8,000之间的值.max表示最大存储大小为2 ^ 31-1个字节.存储大小是输入数据的实际长度+ 2个字节.输入的数据长度可以是0个字节.varbinary的ANSI SQL同义词是二进制变量.

那么如何在varbinary字段中存储更大的文件呢?我不打算使用FILESTREAM,因为我要保存的文件最大为200kb到1mb,我正在使用的代码:

UPDATE [table]
SET file = ( SELECT * FROM OPENROWSET ( BULK 'C:\A directory\A file.ext', SINGLE BLOB)    alias) 
WHERE idRow = 1
Run Code Online (Sandbox Code Playgroud)

我已经能够成功地将该代码执行到小于或等于8000字节的文件.如果我尝试使用8001字节大小的文件,它将失败.我在表上的文件字段有一个名为"文件"类型的字段varbinary(8000),正如我所说,我无法更改为更大的值.

sql-server varbinary sql-server-2008 sql-server-2008-r2 varbinarymax

8
推荐指数
1
解决办法
4万
查看次数

EF6 OutOfMemoryException使用varbinary(max)属性评估实体

在我的WebAPI Web应用程序中,我向表中添加了varbinary(max)字段,并向POCO(BatchCharge)添加了byte []字段.该实体具有子实体(Charge).

Visual Studio 2013,实体框架6,SQL Server 2014.

数据模型如下:

public class BatchCharge
{
    public int ID { get; set; }
    public byte[] FileData { get; set; }
    public virtual ICollection<Charge> Charges { get; set; } 
}

public class Charge
{
    public int ID { get; set; }
    public DateTime CreatedUTC { get; set; }
    public decimal Amount { get; set; }
    public virtual BatchCharge BatchCharge { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

映射在Charge实体(子)上完成,如下所示:

public class ChargeMap : EntityTypeConfiguration<Charge>
{
    public ChargeMap()
    { …
Run Code Online (Sandbox Code Playgroud)

entity-framework one-to-many varbinarymax entity-framework-6

8
推荐指数
1
解决办法
170
查看次数

将varbinary(max)转换为xml格式

0x1F8B0800000000000400EDBD07601C499625262F6DCA7B7F4AF54AD7E074A10880601324D8904010ECC188CDE692EC1D69472329AB2A81CA6556655D661640CCED9DBCF7DE7BEFBDF7DE7BEFBDF7BA3B9D4E27F7DFFF3F5C6664016CF6CE4ADAC99E2180AAC81F3F7E7C1F3F221E7F59CFF23A7DB72897CD671FCDDB76F5E8EEDD26CB9AF1A41D4FABC5DDCBFB1FC9B78F0AFBFDD5D5D5F8EADEB8AA2FEEEEEDECECDEFDBDBF78FE7A3ACF17D976B16CDA6C39CD3F3A7A5C01F0B7F38CFE3D7A9C4DDBA25A1E2DAA59717E7DB26EDA6A91D78FEFEAC78FE9A576DD1C35EBE9346F9AC777F56F81F17BE5D747E7D387FB9F660FF2ED6CE7DE83EDFDC9EEDEF6E4E0D3E9F6C1BDFD07D964B27F7EB0BFF7F8AE6D2E2F9ECD8EB20793D9C383F3DDEDDD7BF7EF6FEF9F4F0EB60F26BB93ED1D3CBB7B3BD39DEC40DFA3D68F9BBCBE2CA6F9CBBABA2CE4A35D42A6F7E1E3FCFC3C27D42FF3A7599BBF2916F911D1E1E1F6CEC1F6BDDD373B078FF6761FEDEE8DEFDFDFDBB9FFE9C1273BBB8F76761EDFEDBF2468BE0F8CF085C753A5A42570B36E56F972D6A3ECAC5AE68EACE635906AF7DEDEDEEECEFDC777FD0F6D8BB3D95DF7C76B7E3D2D1E2D8BF2B38FDA7A9D7F846FAB654BBD35FCEB62952DAF5F648B9CFE6AEB6C562C2FF4AF495196F4D7F1745AAD97DC3A6BDBBA98ACDB1C7FD8EE8F1EAF89E08DFC387A4CAC77362394EEDA21CE72FC724934E88D7259B54FC3819645BE6C05EF237E8DBE0C3ED4263CCEF67A951F1D3FFDE2ECC5E3BBFCFB639AEF655BB4D72775CEBF656513FB3040D37CED7E3B2E8BAC39BA7E7C37FC40BF3F2F689CD52AAF338CA5A9AB6AF17B4E5AA2EA92B8052268DEE386E6A5BC065D57D9343F7AF2E6E4CB2F6C23EF0BD7210DD343D6FD7ED7FFE30D0DF92E64803E6A7F629D37C0C77E70BC6CAEF29A67CA03B5CCAF7C327C20E40E348BFE0D1F361D5E528EFCBD17E5ABFCFCAE20E998BBCBBF7785D17E8ED8EDE9E9B3E3AF9EBFF9A133DCBD7BF9F2A2CE2FDABC9AFD88DD7EC46E3F1476FB11BFFD9CF1DB5DB5AA06FCCB329B923966EFCF9FA9EEEB3DB2F7E0C721CEAB72F6A67A93D78BA3731A0231A6F7C9E3699E35F92BFAA75AF6E0057E23885CB427593D3B5EB7F3AA2E1AB192D4705557B3F5B4E5FECEDA7C81CFD4553B66C171DF0C7DE1F8FA887C2BFBFBE3B9F61EBCA5CEAB3A30D62DD42F1FD7F92FC2CC076DCDB4BC365E59D828EE9C29DC936A961F7DFBCBD76FBE7C79766C7BE34F4D13F244F7EEDBAF3CFFF54CBD70FAE8C1EEDEA7F7EF3FD8DB7EF860BAB3FDE9F9DEDE76BEB3BF4F0EF0EEFEFEF9A7D96CE7D37D07C2BDD70515E12C6D71BA9CBDAC8A65FB555D1E697CB0BB333E78307EB03FDEDBD97BF4E9EEEEEE83BB4FDE8CCF5EFFE4F12C5BB5793DFEEEB75F874EF5DDDE27E3E6726A11F3FB20FE274552321FB062BB6BA6AB682E5FE5CD8AD823C77CC86F4C31A00CEA7B1F3DCEEBBAAAF1EB5DFDFD69DE4CEB62A5C27B3780E604D0FBDD2AED254FA051D74B929423E74093DCE383C79759B9CE9DBB2D7FD25B1EB4F7012C3C1402B7DE7F04B8FBDDF1D8ABAAECFC4574A37FCDA45B15830FA1E58C776CFFE66F8EDF973867AF8F4FDE9CFDE4F19BD3A7E1009E1D3F7F7DFAF569F3FCECE4F4C5EBD337BFCFCBD310EED9EB9710A5DD873B0FBF3EF4A75F7E717CF6E2ECC5B32F5F1EBF7EFDDD2F5F85C8DFFDDA205F1C7F11E2FB7540F1D84F4E7FFFFEE067F979B62EDBAF3FF02F5F7D7EFCE2ECA78EDF9C7DF9E2AC33631FCCCF67AF7FFFE3AFDE101DFACC207623C6CB5DAE337A4258D8FFCBFBB2A7FC6F340ABBFFAF350AA74F7FFFD3DFFBE4DBC72F3E3F1DB60DF7DEC336ECFEBFC6367CFBB46B1B7A9FFCC836FCFFD7367CF5FAF4D5F3A7C72F5F1EBFF97638027C4A0C74F2E2B34DD992D1975F7DA684C4AF143DC877F8635E352DB9A8A3A7279F7DFB14FF96D5342BBF3EBD07EDD89B575FFD6C98B1E7676F3E002CB992AF8E3FEF80BCBFF3F501D2F065CABFE1A1FFEC58B197CF8FFB96F6A82CDA3CFD1022FCBC358E7B3F328E3F328E3F328E56B0361B479B78FB2198C77BC3C9B61F59C79F5BEBF84D04B83F328FFF2F308F035FE015C980FE3F77D83928591F0000
Run Code Online (Sandbox Code Playgroud)

有人可以指导我在sql server 2005中将上面的varbinary(max)转换为xml格式(解密)吗?

当我尝试将数据转换为xml时,我收到此错误:

XML解析:第0行,字符0,无法识别的输入签名

xml sql-server-2005 varbinarymax

5
推荐指数
2
解决办法
3万
查看次数

如何提取 varbinary(max) 列的值?

我有一varbinary(max)列将图像存储在 SQL 数据库中。

我正在处理一个 newdb 脚本,其中一个应用程序创建了一个新的 db 实例并填充了一些表。我正在处理的表之一是初始化该图像列。

为此,我使用 select 语句打印了列的内容,并将内容粘贴到 newdb 脚本的 insert 语句中。这最初似乎有效,但图像未正确加载。

所以我比较了DATALENTH()原始数据(5469988)和新数据(21839)的。看来 Microsoft SQL Server management Studio - 2014 切断了数据,为什么我在某个时候从原始数据库复制了它。我需要能够获得该列的全部内容。有任何想法吗?

sql sql-server ssms varbinary varbinarymax

5
推荐指数
1
解决办法
5675
查看次数

VARBINARY(MAX) 是什么意思?

我正在尝试将 MSSQL 数据库移植到 MariaDB,并且遇到了使用 varbinary(max) 创建表的情况:

    `definition` VARBINARY(max) NULL DEFAULT NULL
Run Code Online (Sandbox Code Playgroud)

这实际上会做什么,我可以使用 MariaDB 中的等效类型定义吗?

sql varbinary mariadb varbinarymax

5
推荐指数
1
解决办法
2万
查看次数

更新VARBINARY(max)列时.WRITE(NULL,NULL,NULL)的语义

以下查询的语义是什么?

UPDATE table
SET column .WRITE(NULL, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)

如果columnVARBINARY(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.但是,我似乎无法在文档中找到证据.我是否忽略了某些事情,或者这种无操作行为是否可能改变?

t-sql sql-server varbinary sql-server-2008 varbinarymax

4
推荐指数
1
解决办法
5834
查看次数

C#调整jpg图像,转换为字节并使用varbinary保存到数据库中

我正在尝试调整我使用FileUpload控件上传的jpg图像,并在将其保存到数据库(SQL Server 2008)之前将其转换为byte(varbinary(MAX)).我所做的和下面的代码显示我设法将其转换为字节并作为varbinary(MAX)保存到数据库中.我想知道如何在完成所有这些功能之前调整图像大小.帮帮我吧 谢谢!

阅读文件

string filePath = FileUpload1.PostedFile.FileName;
string filename = Path.GetFileName(filePath);
string ext = Path.GetExtension(filename);
Run Code Online (Sandbox Code Playgroud)

根据文件扩展名设置contenttype

string contenttype = String.Empty;            
switch (ext)
{
   case ".jpg":
   contenttype = "image/jpg";
   break;
}
Run Code Online (Sandbox Code Playgroud)

转换为字节并使用varbinary保存到数据库中

if (contenttype != String.Empty)
{
            Stream fs = FileUpload1.PostedFile.InputStream;

            BinaryReader br = new BinaryReader(fs);

            Byte[] bytes = br.ReadBytes((Int32)fs.Length);

            //insert the file into database
            string strQuery = "insert into MemberReport(username, typeofcrime, location, crdatetime, citizenreport, image1, image2, image3, image4, image5)" +
               " values ('" + username + "','" + …
Run Code Online (Sandbox Code Playgroud)

c# sql-server file-upload image-resizing varbinarymax

4
推荐指数
1
解决办法
1万
查看次数

是否有工具将文件加载到varbinary(max)字段?

我正在考虑创建一个工具来加载SQL Server 2008数据库中的varbinary(max)字段,其中的文件是从打开的文件对话框中选择的.我可以使用任何此类工具或等效工具吗?我的SQL服务器位于托管环境中,我无法对服务器进行物理访问,因此无法使用TSQL加载它.

sql-server-2008 varbinarymax

2
推荐指数
1
解决办法
2004
查看次数

使用Linq到SQL将C#Object转换为Varbinary和从Varbinary转换

我希望能够将任何C#对象保存在SQL数据库表的单个列中.我不清楚如何将对象转换为varbinary或从varbinary中获取它.我的SystemContextObjects表有一个Varbinary(max)的OptionValue列.

var dc1 = new DataContextDataContext();
var optionUpdate = dc1.SystemContextObjects.SingleOrDefault(o => o.OptionId == OptionId && o.OptionKey == OptionKey);
if (optionUpdate != null)
{
    optionUpdate.OptionValue = Value;  <===== NEED HELP HERE...
    optionUpdate.DateCreated = DateTime.Now;
    optionUpdate.PageName = PageName;
    var ChangeSet = dc1.GetChangeSet();
    if (ChangeSet.Updates.Count > 0)
    {
        dc1.SubmitChanges();
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# sql varbinarymax

2
推荐指数
1
解决办法
4468
查看次数

如何在Sql Server中存储和检索varbinary(max)列

我正在开发一个应用程序,我想将用户指纹存储到数据库中,然后将其与从设备中获取的指纹进行比较.将varbinary(max)列转换回byte []时遇到了一些问题.我试过使用GetSqlBinary函数,但它给了我indexoutofrangeException.

我使用下面的代码将模板存储到数据库中,但发现所有用户的值都相同,例如0x000000

public int insernewVoter(NSubject thumb) 
{
    connectionOpen();
    byteArray = thumb.GetTemplateBuffer().ToArray();
    int insert = 0;

    cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "INSERT INTO VOTER (THUMB) VALUES(CONVERT(varbinary(max),'" + byteArray + "'))";
    int rowsupdated = cmd.ExecuteNonQuery();

    if (rowsupdated <= 0) {
        MessageBox.Show("Ho Gya");
    }
    else {
        MessageBox.Show("AP MAR KYN NAI JATA :D");
    }
    return 0;
    connectionClose();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以取悦我,我怎么能首先将byte []插入varbinary类型的列并检索它.

c# sql-server arrays varbinarymax

2
推荐指数
1
解决办法
2万
查看次数