当我尝试将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) 我试图varbinary(MAX)从SQL Server到byte[]C#中的变量.
我怎样才能做到这一点?
谢谢
我正在尝试将Excel文件保存到数据库中,我不想使用文件流,因为它需要有一个服务器.
那么如何在具有类型列的表中插入/更新/选择varbinary(max)?
在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
在我的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
0x1F8B0800000000000400EDBD07601C499625262F6DCA7B7F4AF54AD7E074A10880601324D8904010ECC188CDE692EC1D69472329AB2A81CA6556655D661640CCED9DBCF7DE7BEFBDF7DE7BEFBDF7BA3B9D4E27F7DFFF3F5C6664016CF6CE4ADAC99E2180AAC81F3F7E7C1F3F221E7F59CFF23A7DB72897CD671FCDDB76F5E8EEDD26CB9AF1A41D4FABC5DDCBFB1FC9B78F0AFBFDD5D5D5F8EADEB8AA2FEEEEEDECECDEFDBDBF78FE7A3ACF17D976B16CDA6C39CD3F3A7A5C01F0B7F38CFE3D7A9C4DDBA25A1E2DAA59717E7DB26EDA6A91D78FEFEAC78FE9A576DD1C35EBE9346F9AC777F56F81F17BE5D747E7D387FB9F660FF2ED6CE7DE83EDFDC9EEDEF6E4E0D3E9F6C1BDFD07D964B27F7EB0BFF7F8AE6D2E2F9ECD8EB20793D9C383F3DDEDDD7BF7EF6FEF9F4F0EB60F26BB93ED1D3CBB7B3BD39DEC40DFA3D68F9BBCBE2CA6F9CBBABA2CE4A35D42A6F7E1E3FCFC3C27D42FF3A7599BBF2916F911D1E1E1F6CEC1F6BDDD373B078FF6761FEDEE8DEFDFDFDBB9FFE9C1273BBB8F76761EDFEDBF2468BE0F8CF085C753A5A42570B36E56F972D6A3ECAC5AE68EACE635906AF7DEDEDEEECEFDC777FD0F6D8BB3D95DF7C76B7E3D2D1E2D8BF2B38FDA7A9D7F846FAB654BBD35FCEB62952DAF5F648B9CFE6AEB6C562C2FF4AF495196F4D7F1745AAD97DC3A6BDBBA98ACDB1C7FD8EE8F1EAF89E08DFC387A4CAC77362394EEDA21CE72FC724934E88D7259B54FC3819645BE6C05EF237E8DBE0C3ED4263CCEF67A951F1D3FFDE2ECC5E3BBFCFB639AEF655BB4D72775CEBF656513FB3040D37CED7E3B2E8BAC39BA7E7C37FC40BF3F2F689CD52AAF338CA5A9AB6AF17B4E5AA2EA92B8052268DEE386E6A5BC065D57D9343F7AF2E6E4CB2F6C23EF0BD7210DD343D6FD7ED7FFE30D0DF92E64803E6A7F629D37C0C77E70BC6CAEF29A67CA03B5CCAF7C327C20E40E348BFE0D1F361D5E528EFCBD17E5ABFCFCAE20E998BBCBBF7785D17E8ED8EDE9E9B3E3AF9EBFF9A133DCBD7BF9F2A2CE2FDABC9AFD88DD7EC46E3F1476FB11BFFD9CF1DB5DB5AA06FCCB329B923966EFCF9FA9EEEB3DB2F7E0C721CEAB72F6A67A93D78BA3731A0231A6F7C9E3699E35F92BFAA75AF6E0057E23885CB427593D3B5EB7F3AA2E1AB192D4705557B3F5B4E5FECEDA7C81CFD4553B66C171DF0C7DE1F8FA887C2BFBFBE3B9F61EBCA5CEAB3A30D62DD42F1FD7F92FC2CC076DCDB4BC365E59D828EE9C29DC936A961F7DFBCBD76FBE7C79766C7BE34F4D13F244F7EEDBAF3CFFF54CBD70FAE8C1EEDEA7F7EF3FD8DB7EF860BAB3FDE9F9DEDE76BEB3BF4F0EF0EEFEFEF9A7D96CE7D37D07C2BDD70515E12C6D71BA9CBDAC8A65FB555D1E697CB0BB333E78307EB03FDEDBD97BF4E9EEEEEE83BB4FDE8CCF5EFFE4F12C5BB5793DFEEEB75F874EF5DDDE27E3E6726A11F3FB20FE274552321FB062BB6BA6AB682E5FE5CD8AD823C77CC86F4C31A00CEA7B1F3DCEEBBAAAF1EB5DFDFD69DE4CEB62A5C27B3780E604D0FBDD2AED254FA051D74B929423E74093DCE383C79759B9CE9DBB2D7FD25B1EB4F7012C3C1402B7DE7F04B8FBDDF1D8ABAAECFC4574A37FCDA45B15830FA1E58C776CFFE66F8EDF973867AF8F4FDE9CFDE4F19BD3A7E1009E1D3F7F7DFAF569F3FCECE4F4C5EBD337BFCFCBD310EED9EB9710A5DD873B0FBF3EF4A75F7E717CF6E2ECC5B32F5F1EBF7EFDDD2F5F85C8DFFDDA205F1C7F11E2FB7540F1D84F4E7FFFFEE067F979B62EDBAF3FF02F5F7D7EFCE2ECA78EDF9C7DF9E2AC33631FCCCF67AF7FFFE3AFDE101DFACC207623C6CB5DAE337A4258D8FFCBFBB2A7FC6F340ABBFFAF350AA74F7FFFD3DFFBE4DBC72F3E3F1DB60DF7DEC336ECFEBFC6367CFBB46B1B7A9FFCC836FCFFD7367CF5FAF4D5F3A7C72F5F1EBFF97638027C4A0C74F2E2B34DD992D1975F7DA684C4AF143DC877F8635E352DB9A8A3A7279F7DFB14FF96D5342BBF3EBD07EDD89B575FFD6C98B1E7676F3E002CB992AF8E3FEF80BCBFF3F501D2F065CABFE1A1FFEC58B197CF8FFB96F6A82CDA3CFD1022FCBC358E7B3F328E3F328E3F328E56B0361B479B78FB2198C77BC3C9B61F59C79F5BEBF84D04B83F328FFF2F308F035FE015C980FE3F77D83928591F0000
Run Code Online (Sandbox Code Playgroud)
有人可以指导我在sql server 2005中将上面的varbinary(max)转换为xml格式(解密)吗?
当我尝试将数据转换为xml时,我收到此错误:
XML解析:第0行,字符0,无法识别的输入签名
我有一varbinary(max)列将图像存储在 SQL 数据库中。
我正在处理一个 newdb 脚本,其中一个应用程序创建了一个新的 db 实例并填充了一些表。我正在处理的表之一是初始化该图像列。
为此,我使用 select 语句打印了列的内容,并将内容粘贴到 newdb 脚本的 insert 语句中。这最初似乎有效,但图像未正确加载。
所以我比较了DATALENTH()原始数据(5469988)和新数据(21839)的。看来 Microsoft SQL Server management Studio - 2014 切断了数据,为什么我在某个时候从原始数据库复制了它。我需要能够获得该列的全部内容。有任何想法吗?
我正在尝试将 MSSQL 数据库移植到 MariaDB,并且遇到了使用 varbinary(max) 创建表的情况:
`definition` VARBINARY(max) NULL DEFAULT NULL
Run Code Online (Sandbox Code Playgroud)
这实际上会做什么,我可以使用 MariaDB 中的等效类型定义吗?
以下查询的语义是什么?
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.但是,我似乎无法在文档中找到证据.我是否忽略了某些事情,或者这种无操作行为是否可能改变?
我正在尝试调整我使用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) 我正在考虑创建一个工具来加载SQL Server 2008数据库中的varbinary(max)字段,其中的文件是从打开的文件对话框中选择的.我可以使用任何此类工具或等效工具吗?我的SQL服务器位于托管环境中,我无法对服务器进行物理访问,因此无法使用TSQL加载它.
我希望能够将任何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) 我正在开发一个应用程序,我想将用户指纹存储到数据库中,然后将其与从设备中获取的指纹进行比较.将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类型的列并检索它.
varbinarymax ×13
c# ×5
sql-server ×5
sql ×4
varbinary ×4
.net ×2
arrays ×1
byte ×1
dbnull ×1
file-upload ×1
insert ×1
mariadb ×1
one-to-many ×1
ssms ×1
t-sql ×1
xml ×1