import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.sql.Statement;
import java.sql.ResultSet;
import java.io.*;
public class BlobDemo{
//定義MYSQL的數據庫驅動程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定義MYSQL的數據庫的連接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn";
//MYSQL數據庫的連接用戶名
public static final String DBUSER = "root";
//MYSQL數據庫的連接密碼
public static final String DBPASS = "mysqladmin";
public static void main(String args[]) throws Exception{
Connection conn = null; //數據庫連接
PreparedStatement pstmt = null; //數據庫的操作,預處理
String name = "任我行";
String sql = "INSERT INTO userblob(name,photo) VALUES (?,?)";
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql);
File file = new File("d:" + File.separator + "大对象.jpg");
InputStream in = new FileInputStream(file);
pstmt.setString(1, name);
pstmt.setBinaryStream(2, in, (int)file.length());
pstmt.executeUpdate();
pstmt.close(); //這句報異常
conn.close();
}
}
14 个解决方案
#1
什么错误,log
#2
你的代码都不处理异常。。。
#3
错误信息。。
#4
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义需要的对象
PreparedStatement ps=null;
ResultSet rs=null;
Connection ct=null;
try{
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//得到连接
ct=DriverManager.getConnection("jdbc:odbc:hello","sa","123");
//创建ps
// ps=ct.prepareStatement("select * from stu");
// rs=ps.executeQuery();
// while(rs.next())
// {
// System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getInt(4)+" "+rs.getString(5)+" "+rs.getString(6));
// }
//添加数据使用PreparedStatement
ps=ct.prepareStatement("insert into stu values(?,?,?,?,?,?)");
ps.setString(1, "006");
ps.setString(2, "不会");
ps.setString(3, "女");
ps.setInt(4, 55);
ps.setString(5, "006");
ps.setString(6, "006");
//执行
int i=ps.executeUpdate();
if(i==1)
{
System.out.println("添加成功");
}else
{
System.out.println("添加不成功");
}
}catch(Exception e)
{
e.printStackTrace();
}finally{
//关闭资源
try{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
一个例子,lz自己看看
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义需要的对象
PreparedStatement ps=null;
ResultSet rs=null;
Connection ct=null;
try{
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//得到连接
ct=DriverManager.getConnection("jdbc:odbc:hello","sa","123");
//创建ps
// ps=ct.prepareStatement("select * from stu");
// rs=ps.executeQuery();
// while(rs.next())
// {
// System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getInt(4)+" "+rs.getString(5)+" "+rs.getString(6));
// }
//添加数据使用PreparedStatement
ps=ct.prepareStatement("insert into stu values(?,?,?,?,?,?)");
ps.setString(1, "006");
ps.setString(2, "不会");
ps.setString(3, "女");
ps.setInt(4, 55);
ps.setString(5, "006");
ps.setString(6, "006");
//执行
int i=ps.executeUpdate();
if(i==1)
{
System.out.println("添加成功");
}else
{
System.out.println("添加不成功");
}
}catch(Exception e)
{
e.printStackTrace();
}finally{
//关闭资源
try{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
一个例子,lz自己看看
#5
现在繁体字比较时髦?
#6
也许不是大陆人。。。
#7
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[?\0??|?÷?\'?y??§?SQ]-????gg?“?2y5?^(?~?à??k???o?é6ê[?—?p2~¤Wó?qà+?|?\'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
at BlobDemo.main(BlobDemo.java:30)
貌似是二進制讀取圖片錯誤,看的視頻,視頻上的能運行,我的不行
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
at BlobDemo.main(BlobDemo.java:30)
貌似是二進制讀取圖片錯誤,看的視頻,視頻上的能運行,我的不行
#8
InputStream in = new FileInputStream(file);
pstmt.setString(1, name);
pstmt.setBinaryStream(2, in, (int)file.length());
很少这样存,
我觉得pstmt.setBinaryStream(2, in, (int)file.length()); 有问题!
pstmt.setString(1, name);
pstmt.setBinaryStream(2, in, (int)file.length());
很少这样存,
我觉得pstmt.setBinaryStream(2, in, (int)file.length()); 有问题!
#9
错误信息指明有语法问题。
#10
使用此方法讀取大文本數據可以,讀圖片就報錯
#11
估计是乱码问题
#12
注释都给去掉
#13
要是存储大文本情有可原,但是存储图片有点不应该,如果一个图片上M了,如果是大系统上没有多久数据库该崩溃了。
一般图片之类的文件,如果没有特殊的需求的话,最好存路径就可以。
#14
File file = new File("d:" + File.separator + "大对象.jpg");
这句 好像有问题
看看":"是中文状态下还是英文状态下的
你的数据库 支持不支持 中文 如果 不支持中文 大对象 到了数据库中直接是乱码,也许会报出语法错误的异常来
这句 好像有问题
看看":"是中文状态下还是英文状态下的
你的数据库 支持不支持 中文 如果 不支持中文 大对象 到了数据库中直接是乱码,也许会报出语法错误的异常来
#1
什么错误,log
#2
你的代码都不处理异常。。。
#3
错误信息。。
#4
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义需要的对象
PreparedStatement ps=null;
ResultSet rs=null;
Connection ct=null;
try{
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//得到连接
ct=DriverManager.getConnection("jdbc:odbc:hello","sa","123");
//创建ps
// ps=ct.prepareStatement("select * from stu");
// rs=ps.executeQuery();
// while(rs.next())
// {
// System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getInt(4)+" "+rs.getString(5)+" "+rs.getString(6));
// }
//添加数据使用PreparedStatement
ps=ct.prepareStatement("insert into stu values(?,?,?,?,?,?)");
ps.setString(1, "006");
ps.setString(2, "不会");
ps.setString(3, "女");
ps.setInt(4, 55);
ps.setString(5, "006");
ps.setString(6, "006");
//执行
int i=ps.executeUpdate();
if(i==1)
{
System.out.println("添加成功");
}else
{
System.out.println("添加不成功");
}
}catch(Exception e)
{
e.printStackTrace();
}finally{
//关闭资源
try{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
一个例子,lz自己看看
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义需要的对象
PreparedStatement ps=null;
ResultSet rs=null;
Connection ct=null;
try{
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//得到连接
ct=DriverManager.getConnection("jdbc:odbc:hello","sa","123");
//创建ps
// ps=ct.prepareStatement("select * from stu");
// rs=ps.executeQuery();
// while(rs.next())
// {
// System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getInt(4)+" "+rs.getString(5)+" "+rs.getString(6));
// }
//添加数据使用PreparedStatement
ps=ct.prepareStatement("insert into stu values(?,?,?,?,?,?)");
ps.setString(1, "006");
ps.setString(2, "不会");
ps.setString(3, "女");
ps.setInt(4, 55);
ps.setString(5, "006");
ps.setString(6, "006");
//执行
int i=ps.executeUpdate();
if(i==1)
{
System.out.println("添加成功");
}else
{
System.out.println("添加不成功");
}
}catch(Exception e)
{
e.printStackTrace();
}finally{
//关闭资源
try{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
一个例子,lz自己看看
#5
现在繁体字比较时髦?
#6
也许不是大陆人。。。
#7
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[?\0??|?÷?\'?y??§?SQ]-????gg?“?2y5?^(?~?à??k???o?é6ê[?—?p2~¤Wó?qà+?|?\'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
at BlobDemo.main(BlobDemo.java:30)
貌似是二進制讀取圖片錯誤,看的視頻,視頻上的能運行,我的不行
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
at BlobDemo.main(BlobDemo.java:30)
貌似是二進制讀取圖片錯誤,看的視頻,視頻上的能運行,我的不行
#8
InputStream in = new FileInputStream(file);
pstmt.setString(1, name);
pstmt.setBinaryStream(2, in, (int)file.length());
很少这样存,
我觉得pstmt.setBinaryStream(2, in, (int)file.length()); 有问题!
pstmt.setString(1, name);
pstmt.setBinaryStream(2, in, (int)file.length());
很少这样存,
我觉得pstmt.setBinaryStream(2, in, (int)file.length()); 有问题!
#9
错误信息指明有语法问题。
#10
使用此方法讀取大文本數據可以,讀圖片就報錯
#11
估计是乱码问题
#12
注释都给去掉
#13
要是存储大文本情有可原,但是存储图片有点不应该,如果一个图片上M了,如果是大系统上没有多久数据库该崩溃了。
一般图片之类的文件,如果没有特殊的需求的话,最好存路径就可以。
#14
File file = new File("d:" + File.separator + "大对象.jpg");
这句 好像有问题
看看":"是中文状态下还是英文状态下的
你的数据库 支持不支持 中文 如果 不支持中文 大对象 到了数据库中直接是乱码,也许会报出语法错误的异常来
这句 好像有问题
看看":"是中文状态下还是英文状态下的
你的数据库 支持不支持 中文 如果 不支持中文 大对象 到了数据库中直接是乱码,也许会报出语法错误的异常来