MySQL操作blob的经验研讨

 2022-10-27    348  

以下的文章主要讲述的是MySQL操作blob的经验研讨,如果你在MySQL操作blob的实际操作中有不解之处时,你可以通过以下的文章对其的实际应用与功能有所了解,下面是文章的具体介绍,望你浏览完以下的内容会有所收获。

jsp(SUN企业级应用的首选)+MySQL(和PHP搭配之最佳组合) 记住 要用MySQL(和PHP搭配之最佳组合)的longblob类型来存默认的MySQL操作blob大小不够

MySQL操作blob的经验研讨

数据库字段:id (char) pic (longblob)

转载请注明出处,这时我与我的知己的合作的结过

原来操作blob字段时都要先差个空值,在查blob,好麻烦,用prepareStatment就不用那么麻烦了,哈哈

postblob.heml页面

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxml(标准化越来越近了)ns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>无标题文档</title>
</head>
<body>
<formaction="testblob.jsp(SUN企业级应用的首选)"method="post">
<tablewidth="291"border="1">
<tr>
<tdwidth="107">id</td>
<tdwidth="168"><inputname="id"type="text"/></td>
</tr>
<tr>
<td>file</td>
<td><inputname="file"type="file"/></td>
</tr>
<tr>
<td><inputtype="submit"value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
testblob.jsp(SUN企业级应用的首选) 
<%@pagecontentType="text/html;charset=gb2312"%>  
<%@pageimport="java.sql.*"%>
<%@pageimport="java.util.*"%>
<%@pageimport="java.text.*"%>
<%@pageimport="java.io.*"%>  
<htmlxml(标准化越来越近了)ns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>无标题文档</title>
</head>
<body>
<% 
Stringid=request.getParameter("id"); 
Stringfile=request.getParameter("file"); 
out.print(id); 
out.print(file); 
FileInputStreamstr=newFileInputStream(file); 
out.print(str.available()); 
java.sql.Connectionconn; 
java.lang.StringstrConn; 
Class.forName("org.gjt.mm.MySQL(和PHP搭配之最佳组合).Driver").newInstance(); 
conn=java.sql.DriverManager.getConnection("jdbc:MySQL(和PHP搭配之最佳组合)://localhost/test","root",""); 
Stringsql="insertintotest(id,pic)values(?,?)"; 
PreparedStatementpstmt=conn.prepareStatement(sql); 
pstmt.setString(1,id); 
pstmt.setBinaryStream(2,str,str.available()); 
pstmt.execute(); 
out.println("Success,YouHaveInsertanImageSuccessfully"); 
pstmt.close(); 
%> 
<ahref="readblob.jsp(SUN企业级应用的首选)">查看图片</a>
<ahref="postblob.html">返回</a>
</body>
</html>
readblob.jsp(SUN企业级应用的首选) 
<%@pagecontentType="text/html;charset=gb2312"%>  
<%@pageimport="java.sql.*,javax.sql.*"%>
<%@pageimport="java.util.*"%>
<%@pageimport="java.text.*"%>
<%@pageimport="java.io.*"%>  
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxml(标准化越来越近了)ns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>无标题文档</title>
</head>
<body>
<% 
java.sql.Connectionconn; 
ResultSetrs=null; 
Class.forName("org.gjt.mm.MySQL(和PHP搭配之最佳组合).Driver").newInstance(); 
conn=java.sql.DriverManager.getConnection("jdbc:MySQL(和PHP搭配之最佳组合)://localhost/test","root",""); 
Statementstmt=conn.createStatement(); 
rs=stmt.executeQuery("select*fromtestwhereid='1'"); 
if(rs.next()) 
{ 
Blobb=rs.getBlob("pic"); 
intsize=(int)b.length(); 
out.print(size); 
InputStreamin=b.getBinaryStream(); 
byte[]by=newbyte[size]; 
response.setContentType("image/jpeg"); 
ServletOutputStreamsos=response.getOutputStream(); 
intbytesRead=0; 
while((bytesRead=in.read(by))!=-1){ 
sos.write(by,0,bytesRead); 
} 
in.close(); 
sos.flush(); 
} 
%>
</body>
</html>

注意:在用sos.write(by, 0, bytesRead);时,该方法把inputstream中的内容在一个新的页面中输出,

如果本页中还有别的内容要输出的话,只有把上述方法改为,bytesRead = in.read(by)) ;

再用out.print(new String(by));方法输出结果,注意在这里不能用by.toString()方法,该方法返回的是要输出内容的内存地址。MySQL(和PHP搭配之最佳组合)中有MySQL操作blob textarea类型大小了66536基本上放点小的东东就足够了,哈哈,但是现在的数码pic越来越大就只能用longblob了。

  •  标签:  
  • MySQL
  •  

原文链接:https://77isp.com/post/9917.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。