我在做一个职工管理系统,里面有一个添加功能,涉及到三个文件
/*
DBmanager.java
*/
public class DBmanager {
public DBmanager(){
}
public void OpenConn()throws Exception{
try{
url="jdbc:odbc:local";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(Exception e){
//e.printStackTrace();
System.out.println("OpenConn");
//return null;
}
try{
con=DriverManager.getConnection(url,"","");
}catch(Exception e){
//e.printStackTrace();
System.out.println("OpenConn");
//return null;
}
}
public ResultSet executeQuery(String sql){
stat=null;
rs=null;
try{
stat=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stat.executeQuery(sql);
}catch(SQLException e){
//e.printStackTrace();
System.out.println("executeQuery");
}
return rs;
}
public void close(){
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
public void closeStatement(){
try{
if(stat!=null){
stat.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void closeResultSet(){
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
public void executeUpdate(String sql){
stat=null;
rs=null;
try{
stat=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
stat.executeQuery(sql);
con.commit();
}catch(SQLException ee){
//ee.printStackTrace();
System.out.println("警告数据不完整");
//throw new ApplicationException("",);
}
}
private String url;
private String porNumber;
private String serverName;
private String databaseName;
private String userName;
private String password;
private Connection con;
private Statement st;
private ResultSet rs;
private Statement stat;
}/*
departbean
*/
import java.util.*;
import java.sql.*;
import javax.swing.*;
public class departbean {
String sql;
ResultSet rs=null; String departno;
String departname;
String departnum;
String departdes; String colName;//列名
String colValue;//列值
String colValue2;//列值 int ID;
/*添加部门信息*/
departbean(){}
public void addDepart(String no,String name,String num,String des){
DBmanager DB=new DBmanager();
this.departno=no;
this.departname=name;
this.departnum=num;
this.departdes=des;
if(no==null||name==null){
JOptionPane.showMessageDialog(null,"部门号和部门名不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
else{
sql="insert into department values('"+departno+"','"+departname+"','"+departnum+"','"+departdes+"');";
try{
DB.OpenConn();
DB.executeUpdate(sql);
JOptionPane.showMessageDialog(null,"成功添加");
}catch(Exception ee){
System.out.println("这里错误");
JOptionPane.showMessageDialog(null,"保存失败","错误",JOptionPane.ERROR_MESSAGE);
}finally{
DB.closeStatement();
DB.close();
}
}
}
}
/*
plus.java
*/
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.out.println(jTextField1.getText());
System.out.println(jTextField2.getText());
System.out.println(jTextField3.getText());
System.out.println(jTextArea1.getText());
jTextField1.setEnabled(false);
jTextField2.setEnabled(false);
jTextField3.setEnabled(false);
jTextArea1.setEnabled(false);
new departbean().addDepart(jTextField1.getText(),jTextField2.getText(),jTextField3.getText(),jTextArea1.getText());
}
这个按钮实现的是保存,但是实现后能向数据库中添加数据了,但是总是会爆出异常,executeUpdate(String sql)这里抛出了SQLException,我找了很久,找不出原因,哪位高手帮帮忙!!!急救!!
/*
DBmanager.java
*/
public class DBmanager {
public DBmanager(){
}
public void OpenConn()throws Exception{
try{
url="jdbc:odbc:local";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(Exception e){
//e.printStackTrace();
System.out.println("OpenConn");
//return null;
}
try{
con=DriverManager.getConnection(url,"","");
}catch(Exception e){
//e.printStackTrace();
System.out.println("OpenConn");
//return null;
}
}
public ResultSet executeQuery(String sql){
stat=null;
rs=null;
try{
stat=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stat.executeQuery(sql);
}catch(SQLException e){
//e.printStackTrace();
System.out.println("executeQuery");
}
return rs;
}
public void close(){
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
public void closeStatement(){
try{
if(stat!=null){
stat.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void closeResultSet(){
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
public void executeUpdate(String sql){
stat=null;
rs=null;
try{
stat=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
stat.executeQuery(sql);
con.commit();
}catch(SQLException ee){
//ee.printStackTrace();
System.out.println("警告数据不完整");
//throw new ApplicationException("",);
}
}
private String url;
private String porNumber;
private String serverName;
private String databaseName;
private String userName;
private String password;
private Connection con;
private Statement st;
private ResultSet rs;
private Statement stat;
}/*
departbean
*/
import java.util.*;
import java.sql.*;
import javax.swing.*;
public class departbean {
String sql;
ResultSet rs=null; String departno;
String departname;
String departnum;
String departdes; String colName;//列名
String colValue;//列值
String colValue2;//列值 int ID;
/*添加部门信息*/
departbean(){}
public void addDepart(String no,String name,String num,String des){
DBmanager DB=new DBmanager();
this.departno=no;
this.departname=name;
this.departnum=num;
this.departdes=des;
if(no==null||name==null){
JOptionPane.showMessageDialog(null,"部门号和部门名不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
else{
sql="insert into department values('"+departno+"','"+departname+"','"+departnum+"','"+departdes+"');";
try{
DB.OpenConn();
DB.executeUpdate(sql);
JOptionPane.showMessageDialog(null,"成功添加");
}catch(Exception ee){
System.out.println("这里错误");
JOptionPane.showMessageDialog(null,"保存失败","错误",JOptionPane.ERROR_MESSAGE);
}finally{
DB.closeStatement();
DB.close();
}
}
}
}
/*
plus.java
*/
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.out.println(jTextField1.getText());
System.out.println(jTextField2.getText());
System.out.println(jTextField3.getText());
System.out.println(jTextArea1.getText());
jTextField1.setEnabled(false);
jTextField2.setEnabled(false);
jTextField3.setEnabled(false);
jTextArea1.setEnabled(false);
new departbean().addDepart(jTextField1.getText(),jTextField2.getText(),jTextField3.getText(),jTextArea1.getText());
}
这个按钮实现的是保存,但是实现后能向数据库中添加数据了,但是总是会爆出异常,executeUpdate(String sql)这里抛出了SQLException,我找了很久,找不出原因,哪位高手帮帮忙!!!急救!!
我没有数据库没法调试啊 你的说一下出错的是哪行
什么异常 sql语句在数据库上执行有没有问题
java.sql.SQLException: No ResultSet was produced
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:259)
at workers.DBmanager.executeUpdate(DBmanager.java:78)
at workers.departbean.addDepart(departbean.java:44)
at workers.Plus.jButton1ActionPerformed(Plus.java:148)
at workers.Plus.access$000(Plus.java:12)
at workers.Plus$1.actionPerformed(Plus.java:59)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
这句没错呀,在数据库里面能实现
public boolean add(Aritcle ar) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = ConnMySql.getConnection();
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO t_article(ID,C_NAME,E_NAME,DOC_SOURCE,PRESS_YEAR,PRESS_MONTH,C_KEY,E_KEY,C_SUMMARY,E_SUMMARY,PROJECT_TYPE,DOI) ");
sb.append("VALUES(");
sb.append(ar.getId() + ",");
sb.append("'" + ar.getChName() + "'" + ",");
sb.append("'" + ar.getEnName() + "'" + ",");
sb.append("'" + ar.getDocSource() + "'" + ",");
sb.append("'" + ar.getPressYear() + "'" + ",");
sb.append("'" + ar.getPressMonth() + "'" + ",");
sb.append("'" + ar.getChKey() + "'" + ",");
sb.append("'" + ar.getEnKey() + "'" + ",");
sb.append("'" + ar.getChSummary() + "'" + ",");
sb.append("'" + ar.getEnSummary() + "'" + ",");
sb.append("'" + ar.getProjectType() + "'" + ",");
sb.append("'" + ar.getDoi() + "'" );
sb.append(")");
ps = conn.prepareStatement(sb.toString());
ps.executeUpdate();
conn.commit();
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
Close.closeConn(conn);
Close.closePs(ps);
}
return flag;
}
我输入英文可以运行,但是输入中文的时候有的时候能运行,但在sqlserver2005中是乱码,有的时候又不能运行,不稳定。