定義了一個類:
//增,刪,改
public int executeUpdate(String sql,Object[] wenhao){
int wenhaoLength = 0;
//獲取資料庫連接成功
if(this.getDBConnection()){
try {
//創建PreparedStatement
psmt = connection.prepareStatement(sql);
//遍歷Object[],填充占位符 (?)
for(int i=0;i<wenhao.length;i++){
psmt.setObject(i+1, wenhao[0]);
}
wenhaoLength = psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
return wenhaoLength;
}
介面:
//增加新聞資訊
public void addNews(int id,int categoryId,String title,String summary,String content,String author,Date createDate);
//修改特定新聞
public void updateNews(String title,int id);
實作類:
//增加新聞資訊
public void addNews(int id,int categoryId,String title,String summary,String content,String author,Date createDate){
try {
String sql = "INSERT INTO news_detail(id,categoryId,title,summary,content,author,createDate) VALUE (?,?,?,?,?,?,?)";
Object[] wenhao = {id,categoryId,title,summary,content,author,new Timestamp(createDate.getTime())};
int i = this.executeUpdate(sql, wenhao);
if(i>0){
System.out.println("增加新聞資訊成功");
}
}finally{
//釋放資源
this.closeResult();
}
}
//修改特定新聞
public void updateNews(String title,int id){
try {
String sql = "UPDATE news_detail SET title=? WHERE id = ?";
Object[] wenhao = {title,id};
int i = this.executeUpdate(sql, wenhao);
if(i>0){
System.out.println("修改新聞資訊成功");
}
}finally{
//釋放資源
this.closeResult();
}
}
洗掉可以正常執行,為啥增加和修改卻報錯呢,瞅了半天也沒發現哪錯了。。
這是增加的運行代碼:dao.addNews(3, 2, "test", "test", "test", "zy", new Date());
報錯:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '3' for column 'createDate' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2936)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1601)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1710)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2436)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1402)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1694)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1608)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1593)
at cn.kgc.dao.AllDao.executeUpdate(AllDao.java:42)
at cn.kgc.dao.impl.NewsDaoimpl.addNews(NewsDaoimpl.java:20)
at cn.kgc.dao.impl.NewsDaoimpl.main(NewsDaoimpl.java:109)
執行修改行控制臺空白,啥也不顯示,
運行代碼:dao.updateNews("newsTitle", 3);
大佬們幫我看看,謝謝了
uj5u.com熱心網友回復:
111111uj5u.com熱心網友回復:
大佬們幫我看看,非常謝謝!uj5u.com熱心網友回復:
看報錯資訊就是3對應到createDate欄位上去了,psmt.setObject(i+1, wenhao[0]);wenhao[i]才對uj5u.com熱心網友回復:
謝謝大哥,我看到了,改過來了,非常感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/62622.html
標籤:其他
