вставка файла как Varbinary (MAX) в SQL Server 2008 - PullRequest
0 голосов
/ 08 октября 2011

Я пытаюсь вставить значения в мою таблицу, которая содержит varbinary (MAX), и файл, который я пытаюсь вставить, является байтом []

 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);
}

, и я получаю это исключение:

Имя объекта или столбца отсутствует или пусто.Для операторов SELECT INTO убедитесь, что у каждого столбца есть имя.Для других операторов ищите пустые псевдонимы.Псевдонимы, определенные как "" или [], не допускаются.Измените псевдоним на допустимое имя.

Неверный синтаксис рядом с ''.

, и вот функция, которая выполняет мой запрос:

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;
}

как можноВставить этот байт [] в мою таблицу?спасибо

1 Ответ

3 голосов
/ 08 октября 2011

Попробуйте это:

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();
    }
}
...