Java 如何将base64映像置于SQLSERVER映像类型中?
我试图将base64字符串放在SqlServer的映像类型上,或将VarBinary(MAX)放在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
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