我有这个问题:
SELECT PICTURE FROM LOGO WHERE LOGONO = ?
Run Code Online (Sandbox Code Playgroud)
("PICTURE"是SQL Server中的Image列)
而这段代码用于读取数据:
using (DbDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
if (!reader.IsDBNull(0))
{
byte[] buffer = new byte[8000];
while (reader.GetBytes(0, 0, buffer, 0, 8000) > 0)
picture.AddRange(buffer);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当列包含null时,始终会在reader.IsDBNull(0)语句上抛出InvalidOperationException("行/列不存在数据").
MSDN说:
在调用类型化的get方法(例如,GetByte,GetChar等)之前调用此方法以查看是否存在空列值,以避免引发错误.
如何在不触发异常的情况下检查列是否包含null?我是以错误的方式解决这个问题吗?
我正在尝试(没有成功)从服务中获取blob图像并将其显示为html中的图像.
我的HTML是:
<img src="<%: Url.Action("GetPersonImage", new { pid = Model.PersonId }) %>" alt="" />
Run Code Online (Sandbox Code Playgroud)
女巫在Sourceas中表现出来
<img src="/demo4/ABook/GetPersonImage/?pid=210092" alt="">
Run Code Online (Sandbox Code Playgroud)
我的行动是:
public void GetPersonImage(int pid)
{
string src = so.GetPersonImage(pid);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(src);
Response.Clear();
Response.AddHeader("Content-Length", src.Length.ToString());
Response.ContentType = "image/gif";
Response.BufferOutput = false;
Response.BinaryWrite(bytes);
Response.End();
}
Run Code Online (Sandbox Code Playgroud)
如果我访问,这在页面中没有显示任何内容
http://localhost:60556/demo4/ABook/GetPersonImage/?pid=210092
我甚至尝试过 FileStreamResult
public FileStreamResult GetPersonImage(int pid)
{
string src = so.GetPersonImage(pid);
Response.Clear();
Response.Expires = 0;
Response.AddHeader("Content-Length", src.Length.ToString());
Response.BufferOutput = false;
return new FileStreamResult(
new System.IO.MemoryStream(
System.Text.Encoding.UTF8.GetBytes(src)), "image/gif");
}
Run Code Online (Sandbox Code Playgroud)
仍然没有:(
该src变量包含 …
我已将我的图像存储到(中)BLOB字段中,并希望检索它们嵌入在我生成的PHP页面中.
当我测试使用时检索存储的图像
header('Content-type: ' . $image['mime_type']);
echo $image['file_data'];
Run Code Online (Sandbox Code Playgroud)
一切看起来都很好.
但是,我还没有找到一种方法将图像干净地检索到文档的中间.例如,使用
$image = $row['file_data'];
echo '<img src="data:image/jpeg;base64,'.$image['file_data'].'" alt="photo"><br>';
Run Code Online (Sandbox Code Playgroud)
...要么...
$im = imageCreateFromString($image);
Run Code Online (Sandbox Code Playgroud)
我只是在屏幕上看到一堆十六进制垃圾.
我使用以下方式直接存储图像:
ob_start();
imagejpeg($resizedImage, null, 100);
$content = ob_get_contents();
ob_end_clean();
$sql = sprintf(
"insert into images (filename, mime_type, file_size, file_data, event_id)
values ('%s', '%s', %d, '%s',%d)",
mysql_real_escape_string($fileName),
mysql_real_escape_string($mimeType),
$imageSize,
mysql_real_escape_string($content),
$eventID
);
$result = $cn->query($sql);
Run Code Online (Sandbox Code Playgroud)
有没有人请有一个工作代码片段来成功显示PHP输出中存储的.jpg mid文件?
我正在一个在线购物网站上工作,它也会有产品图片.如果我应该存储图像,我会感到困惑.如果我将这些图像存储在数据库中,则必须将url保存到数据库中,如果我以blob格式存储图像,我必须在使用php之前对其进行解码.谁能告诉哪一个会更好?
我正在使用Spring MVC,Hibernate4和MySQL5创建一些简单的网页.我使用的模型之一包含BLOB值(byte []).当我尝试坚持该模型时,entityManager.persist()
我得到了MySQLSytnaxException.实际上当前配置存在更多问题,例如persist/merge/remove忽略@Transactional注释,但这个问题是最关键的.
我已经尝试过使用session.save(object);或替换Blob的byte [].结果仍然相同.我发现的所有工作示例都使用完全不同的方法 - 例如,他们使用HibernateSessionManager和HibernateTransactionManager而不是JPA - 我想找到解决方案,不需要完全改变我如何持久化实体,当我还不确定它时有助于.
你能告诉我在代码/配置/假设方面犯了什么错误吗?
与Hibernate跟踪一起开始堆栈跟踪:
Hibernate:
insert
into
updates
(changelog, added, developmentVersion, filedata, filedataType, major, minor, nightly, release, package, type, uploader, id)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
22:53:10,888 TRACE BasicBinder:83 - binding parameter [1] as [VARCHAR] - sdfsd
22:53:10,891 TRACE BasicBinder:71 - binding parameter [2] as [DATE] - <null>
22:53:10,894 TRACE BasicBinder:83 - binding parameter [3] as [BOOLEAN] - false
22:53:10,898 …Run Code Online (Sandbox Code Playgroud) 最近,我需要针对oracle 10g做一些性能测试,这种情况是我需要准备尽可能多的具有blob列的记录,并且blob列必须至少包含10kbs的数据。
如何自动生成测试数据?说10,000条记录?
我有一个.sqlite 数据库:
$db = new PDO("sqlite:db.sqlite");
Run Code Online (Sandbox Code Playgroud)
它的大小是60MB。它有1张桌子。该表列中的一列(唯一的重列)保存BLOB_TEXT数据。我正在尝试压缩此列值:
$pdo = $db->query("SELECT id, house_plan FROM houses");
$houses = $pdo->fetchAll(PDO::FETCH_ASSOC);
$initial_length = 0;
$compressed_length= 0;
for ($i = 0; $i < count($houses); $i++) {
$id = $houses[$i]["id"];
$house_plan = $houses[$i]["house_plan"];
$compressed = gzcompress($house_plan);
$initial_length += strlen($house_plan);
$compressed_length += strlen($compressed);
flush();
$query = $db->prepare("UPDATE houses SET house_plan=? WHERE id=" . $id);
$query->bindParam(1, $compressed, PDO::PARAM_LOB);
$query->execute();
}
Run Code Online (Sandbox Code Playgroud)
然后打印汇总的初始BLOB_TEXT数据长度和压缩数据长度(替换了表中的初始数据):
echo "Before: " . $initial_length . ", …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个CSV文件,该文件将在服务器上以UTF-16LE编码保存,然后将结果传递给客户端.这就是我在Coffeescript中做的事情:
Meteor.methods {
iconv: (data, from="UTF-8", to="UTF-16LE") ->
Iconv = Meteor.require('iconv').Iconv
iconv = new Iconv(from, to)
res = iconv.convert(data)
res
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我用服务器从服务器写入文件
fs.writeFileSync('/tmp/test.csv', res)
Run Code Online (Sandbox Code Playgroud)
文件正确生成.但是,我想避免在服务器上创建文件并将其直接保存在客户端上(使用filesaver库).示例客户端代码如下所示:
exportToCsv = (data="tête", filename) ->
callback = (err, res) ->
blob = new Blob([res], {type:'text/csv;charset=UTF-16LE'})
saveAs(blob, filename)
Meteor.call('iconv', data, callback)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在测试的数据是一个带有特殊字符的简单字符串('ê').我的问题是我无法将nodejs缓冲区传递给客户端.它会自动序列化为:
Object {0: 116, 1: 0, 2: 234, 3: 0, 4: 116, 5: 0, 6: 101, 7: 0}
Run Code Online (Sandbox Code Playgroud)
而不是我在服务器上获得的缓冲区输出:
<Buffer 74 00 ea 00 74 00 65 00>
Run Code Online (Sandbox Code Playgroud)
问题不在于从十六进制到十进制的转换,我知道我可以使用某些东西转换回十六进制Number(116).toString(16).但是如何在blob中将此数据写为二进制?
我有一个SQLite带有列的表,其中存储GUID一个字节数组
我试图从我的SQL查询中获取Guid字符串。到目前为止,我已经尝试过:
Select BlobGuidColumn from [MyTable]
但这返回一blob列
是否可以Hex从SQL查询返回字符串?
我正在用GeneXus开发一个应用程序.我需要操作特定Web URL中存在的pdf文件.
如何从此URL读取文件并将其存储在blob对象中?
blob ×10
image ×3
php ×3
c# ×2
mysql ×2
sqlite ×2
asp.net-mvc ×1
binary-data ×1
compression ×1
database ×1
genexus ×1
guid ×1
hibernate ×1
javascript ×1
jpa ×1
meteor ×1
node.js ×1
oracle ×1
spring-mvc ×1
sql ×1