我想把一个文件存入数据库代码如下:public void saveArticles(){
checkConn();
String sql="insert into articles (article,time,zuoze) values(?,?,?)";
System.out.println(new Date().getTime());
File f=new File("src/net/BaseDao.java");
Reader rd=null;
try {
rd=new BufferedReader(new FileReader(f));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int num=exeUpdt(sql, new Object[]{rd,new java.sql.Timestamp(new Date().getTime()),"bbs02"});
if(num==1){
System.out.println("成功传入了一条数据");
}else{
System.out.println("插入失败!");
}
closer();
}
exeUpdt方法代码如下:public int exeUpdt(String sql,Object[] params){
int count=0;
try {
pstmt= conn.prepareStatement(sql);
if(params !=null){
for(int i=0;i<params.length;i++){
if(params[i] instanceof Reader){
pstmt.setCharacterStream(i+1, (Reader) params[i]);
continue;
}
pstmt.setObject(i+1, params[i]);
}
}
count= pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}pstmt.setCharacterStream(i+1, (Reader) params[i])
在JUNIT4测试时不通过pstmt.setCharacterStream(i+1, (Reader) params[i]);java.lang.AbstractMethodError: net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setCharacterStream(ILjava/io/Reader;)V
at net.BaseDao.exeUpdt(BaseDao.java:48)
at net.Manager.saveArticles(Manager.java:114)
at test.ManageTest.saveTest(ManageTest.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)请问该如何修改呢
checkConn();
String sql="insert into articles (article,time,zuoze) values(?,?,?)";
System.out.println(new Date().getTime());
File f=new File("src/net/BaseDao.java");
Reader rd=null;
try {
rd=new BufferedReader(new FileReader(f));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int num=exeUpdt(sql, new Object[]{rd,new java.sql.Timestamp(new Date().getTime()),"bbs02"});
if(num==1){
System.out.println("成功传入了一条数据");
}else{
System.out.println("插入失败!");
}
closer();
}
exeUpdt方法代码如下:public int exeUpdt(String sql,Object[] params){
int count=0;
try {
pstmt= conn.prepareStatement(sql);
if(params !=null){
for(int i=0;i<params.length;i++){
if(params[i] instanceof Reader){
pstmt.setCharacterStream(i+1, (Reader) params[i]);
continue;
}
pstmt.setObject(i+1, params[i]);
}
}
count= pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}pstmt.setCharacterStream(i+1, (Reader) params[i])
在JUNIT4测试时不通过pstmt.setCharacterStream(i+1, (Reader) params[i]);java.lang.AbstractMethodError: net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setCharacterStream(ILjava/io/Reader;)V
at net.BaseDao.exeUpdt(BaseDao.java:48)
at net.Manager.saveArticles(Manager.java:114)
at test.ManageTest.saveTest(ManageTest.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)请问该如何修改呢
pstmt.setCharacterStream(i+1, (Reader) params[i]);
net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setCharacterStream(ILjava/io/Reader;)V 是不是类型转换错误?
net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setCharacterStream(ILjava/io/Reader;)参考:
http://jtds.sourceforge.net/doc/net/sourceforge/jtds/jdbc/JtdsPreparedStatement.html
的方法第一次接触这样的存储问题。
期待高手
public class IniTest {
private Connection conn;
private Statement st;
private PreparedStatement pstatement;
private String driver;
private String url;
private String user;
private String password; public void initParma(String paramFile) {
Properties pro = new Properties();
try {
pro.load(new FileInputStream(paramFile));
driver = pro.getProperty("driver");
url = pro.getProperty("url");
password = pro.getProperty("password");
user = pro.getProperty("user");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public void createTable() {
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
File file = new File("d:/1.txt");
FileInputStream fis = new FileInputStream(file);
pstatement = conn.prepareStatement("insert into text_table values(null,?,?)");
pstatement.setString(1, "书名");
pstatement.setBinaryStream(2, fis, (int) file.length());
int count=pstatement.executeUpdate();
System.out.println("插入了"+count+"条数据");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (pstatement != null) {
try {
pstatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} public static void main(String[] args) {
IniTest iniTest = new IniTest();
iniTest.initParma("d:/mysql.ini");
iniTest.createTable();
}}属性文件mysql.ini没有给出