Java 如何将base64映像置于SQLSERVER映像类型中?

Java 如何将base64映像置于SQLSERVER映像类型中?,java,android,sql,image,Java,Android,Sql,Image,我试图将base64字符串放在SqlServer的映像类型上,或将VarBinary(MAX)放在SqlServer的映像类型上。 为此,我尝试使用 byte[] b = Convert.FromBase64String(mybase64); and put it as a parameter; 我试图转换为memoryStrem并获取缓冲区 使用System.Drawing.Image类型的步骤 我试着用位图 但总是给我一个例外 public bool Insert(List<Arqu

我试图将base64字符串放在SqlServer的映像类型上,或将VarBinary(MAX)放在SqlServer的映像类型上。 为此,我尝试使用

byte[] b = Convert.FromBase64String(mybase64); and put it as a parameter;
我试图转换为memoryStrem并获取缓冲区

使用System.Drawing.Image类型的步骤

我试着用位图

但总是给我一个例外

public bool Insert(List<Arquivo> arquivos, String idponto)
    {

        List<String> Idimgs = criaIdImg(idponto, arquivos.Count);
        for (int i = 0; i<arquivos.Count; i++ )
        {
            cmdInsert.Parameters.AddWithValue("@IdImagem", Idimgs[i]);
            cmdInsert.Parameters.AddWithValue("@IdPonto", idponto);
            cmdInsert.Parameters.AddWithValue("@NomeImagem", arquivos[i].arquivo);
            //System.Convert.FromBase64String(arquivos[i].arquivo)
            Image img = this.Base64ToImage(arquivos[i].arquivo);
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

            int tamanho = Convert.ToInt32(stream.Length);
            //byte[] blob = new byte[tamanho];
           // stream.Read(blob, 0, tamanho);

            cmdInsert.Parameters.AddWithValue("@IMG", stream.GetBuffer());
            cmdInsert.ExecuteNonQuery();
            cmdInsert.Parameters.Clear();
        }
        return true;
    }

    public List<String> criaIdImg(String idPonto, int qtdArquivos){
        List<String> ids = new List<String>();
        String max = idPonto;
        int n = 0;

        SqlDataAdapter daTipo = new SqlDataAdapter(cmdId);
        cmdId.Parameters.AddWithValue("@IDPONTO", idPonto);


        daTipo.Fill(dataTable);

        foreach (DataRow dRow in dataTable.Rows)
        {
            String num = (String)dRow[0];
            num = num.Substring(7);
            n = Convert.ToInt32(num);
            n++;
        }

        for (int i = 0; i < qtdArquivos; i++)
        {
            if(n<10){ 
            ids.Add(idPonto + "00" +n);
            }
            else if (n < 100)
            {
                ids.Add(idPonto + "0" + n);
            }
            else
            {
                ids.Add(idPonto + n);
            }
            n++;
        }
        return ids;
    }

    public Image Base64ToImage(string base64String)
    {
        // Convert Base64 String to byte[]
        byte[] imageBytes = Convert.FromBase64String(base64String);
        MemoryStream ms = new MemoryStream(imageBytes, 0,
          imageBytes.Length);

        // Convert byte[] to Image
        ms.Write(imageBytes, 0, imageBytes.Length);
        Image image = Image.FromStream(ms, true);
        return image;
    }

}
public bool Insert(列出arquivos,字符串)
{
列表Idimgs=criaIdImg(idpton,arquivos.Count);

对于(int i=0;i此错误意味着其中一个框中的文本比声明的列长。请在数据库中展开该列,或在发送到服务器之前验证框中文本的长度。

为什么不使用
image
数据类型将图像插入SQL server {System.Data.SqlClient.SqlException (0x80131904): String or binary data would be truncated. The statement has been terminated. em System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) em System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) em System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() em System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) em System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) em System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) em System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) em System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) em System.Data.SqlClient.SqlCommand.ExecuteNonQuery() em Caderneta.ArquivosDAO.Insert(List`1 arquivos, String idponto) na C:\Users\leandro\Documents\Visual Studio 2010\Projects\Caderneta\Caderneta\ArquivosDAO.cs:linha 61 em Caderneta.Sincronizar.TesteGravaImg(String img1, String img2, String idponto) na C:\Users\leandro\Documents\Visual Studio 2010\Projects\Caderneta\Caderneta\Sincronizar