gpt4 book ai didi

c# - 如何使用 C# 在查询中传递字节数组?

转载 作者:太空狗 更新时间:2023-10-29 23:45:52 27 4
gpt4 key购买 nike

我试图在数据库中插入字节数组的字节。使用以下代码。

String query = String.Format(@"INSERT INTO [Documents]
([InsertedBy], [DocumentName], [Document])
VALUES
('{0}','{1}',{2})",
insertedBy, docName, docBytes);

Cmd.CommandText = query;
Cmd.ExecuteNonQuery();

发生以下异常:

An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name. Incorrect syntax near ''.

我不明白是什么原因。

最佳答案

切勿使用字符串连接或字符串函数进行参数化查询。

另外,因为(我怀疑)docBytes 是一个 byte[],字符串连接不会有您希望的结果。

下面是我的做法:

private static void InsertDocument(SqlCommand cmd, int insertedBy, string docName, byte[] docBytes)
{
cmd.CommandText = @"INSERT INTO [Documents]
([InsertedBy], [DocumentName], [Document])
VALUES
(@insertedBy,@docName,@docBytes)";
cmd.Parameters.Add("insertedBy", SqlDbType.Int).Value = insertedBy;
// Note: consider using `nvarchar` instead of `varchar`;
cmd.Parameters.Add("docName", SqlDbType.VarChar, 100).Value = docName;
// Note: -1 maps to the nvarchar(max) length;
cmd.Parameters.Add("docBytes", SqlDbType.VarBinary, -1).Value = docBytes;

// The following call presupposes that the associated `SqlConnection` is open
cmd.ExecuteNonQuery();
}

关于c# - 如何使用 C# 在查询中传递字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com