Asp.net 在SQL Server 2008中以Varbinary(MAX)的形式插入文件
我试图将值插入到包含varbinary(MAX)的表中,而我试图插入的文件是byte[]Asp.net 在SQL Server 2008中以Varbinary(MAX)的形式插入文件,asp.net,sql-server-2008,varbinary,varbinarymax,Asp.net,Sql Server 2008,Varbinary,Varbinarymax,我试图将值插入到包含varbinary(MAX)的表中,而我试图插入的文件是byte[] public DataTable add1(string docName , byte[] doc) { DBAdaptor db = new DBAdaptor(); string query = "INSERT INTO [Document] (DocumentName, DocumentData) OUTPUT inserted.DocumentID VALUES
public DataTable add1(string docName , byte[] doc)
{
DBAdaptor db = new DBAdaptor();
string query = "INSERT INTO [Document] (DocumentName, DocumentData) OUTPUT inserted.DocumentID VALUES (N'" + docName + "' , " + doc + ")";
return db.QueryRide(query);
}
我得到一个例外:
对象或列名丢失或为空。选择进入
语句,验证每列是否有名称。对于其他语句,请参见
用于空别名。不允许使用定义为“”或[]的别名。
将别名更改为有效名称
“”附近的语法不正确
下面是执行我的查询的函数:
public DataTable QueryRide(string query)
{
DataTable dt = new DataTable();
string conStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand(query, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
try
{
con.Open();
da.Fill(dt);
}
catch (Exception)
{
throw;
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
return dt;
}
如何将此字节[]插入到表中?谢谢试试这个:
private static int insertDocument(string name, byte[] data)
{
using (SqlConnection cn = new SqlConnection("..."))
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandText = @"
INSERT INTO [Document] (DocumentName, DocumentData)
OUTPUT inserted.DocumentID
VALUES (@Name, @Data)";
cm.Parameters.AddWithValue("@Name", name);
cm.Parameters.AddWithValue("@Data", data);
cn.Open();
return (int)cm.ExecuteScalar();
}
}
试试这个:
private static int insertDocument(string name, byte[] data)
{
using (SqlConnection cn = new SqlConnection("..."))
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandText = @"
INSERT INTO [Document] (DocumentName, DocumentData)
OUTPUT inserted.DocumentID
VALUES (@Name, @Data)";
cm.Parameters.AddWithValue("@Name", name);
cm.Parameters.AddWithValue("@Data", data);
cn.Open();
return (int)cm.ExecuteScalar();
}
}
可能的重复应该始终使用参数化查询,而不是将SQL语句连接在一起!!否则,您将面临SQL注入攻击的高风险…可能的重复应该始终使用参数化查询,而不是将SQL语句连接在一起!!否则,您将面临SQL注入攻击的高风险……谢谢,它工作得很好。但是有什么区别呢?当我想选择这个时,我应该写一些这样的查询吗?再次感谢:)我不知道DBAdaptor是如何工作的(它是本地的吗?),但在内部它应该做同样的事情。另外,始终使用参数化查询,就像marc_的saidDBAdaptor有一个我刚才添加的函数一样。还要注意,在这种情况下,您只需要一个整数,而不是一个数据表。谢谢,它工作得很好。但是有什么区别呢?当我想选择这个时,我应该写一些这样的查询吗?再次感谢:)我不知道DBAdaptor是如何工作的(它是本地的吗?),但在内部它应该做同样的事情。另外,始终使用参数化查询,就像marc_的saidDBAdaptor有一个我刚才添加的函数一样