package com.lzw.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import com.lzw.model.TbCusinfo;
import com.lzw.model.Tfoperater;public class Dao {
protected static String dbClassName = "net.sourceforge.jtds.jdbc.Driver";
protected static String dbUrl = "jdbc:jtds:sqlserver://localhost:1433;"
+ "DatabaseName=db_test;SelectMethod=Cursor";
protected static String dbUser="sa";
protected static String dbPass="";
public static Connection conn=null;
static{
try{
if(conn == null){
Class.forName(dbClassName).newInstance();
conn=DriverManager.getConnection(dbUrl,dbUser,dbPass);
}
}catch(Exception e){
e.printStackTrace();
}
}
private Dao(){
}
//新增方法
public static boolean insert(String sql) {
boolean result = false;
try{
Statement st=conn.createStatement();
result = st.execute(sql);
}catch(SQLException e){
e.printStackTrace();
}
return result;
} //修改方法
public static int update(String sql){
int result = 0;
try{
if(conn == null) new Dao();
Statement stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}
return result;
}
//删除方法
public static int delete(String sql){
return update(sql);
}
//查询方法
public static ResultSet query(String sql){
ResultSet result = null;
try{
if(conn == null) new Dao();
Statement stmt = conn.createStatement();
result = stmt.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
}
return result;
}
//关闭方法
public static void close(){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
//读取用户方法
public static Tfoperater selectUser(String nameno,String password){
Tfoperater tfoperater = new Tfoperater();
String sql = "select * from tb_operator where nameno='" + nameno + "' and password='"
+ password + "'";
ResultSet rs = query(sql);
try{
if(rs.next()){
tfoperater.setNameno(nameno);
tfoperater.setPassword(password);
}
}catch(Exception e){
e.printStackTrace();
}
Dao.close();
return tfoperater;
}
//执行指定查询
public static ResultSet zdquery(String zdno){
ResultSet set = query(zdno);
return set;
}
//添加客户信息的方法
public static boolean addCus(TbCusinfo tbcusinfo){
if(tbcusinfo==null)
return false;
return insert("insert tb_cusinfo values('" + tbcusinfo.getCus_no() + "','"
+ tbcusinfo.getName() + "','" + tbcusinfo.getSnm() + "','"
+ tbcusinfo.getPost() + "','" + tbcusinfo.getTel() + "','"
+ tbcusinfo.getFax() + "','" + tbcusinfo.getTelpople() + "','"
+ tbcusinfo.getAddress() + "','" + tbcusinfo.getBank() + "','"
+ tbcusinfo.getBankno() + "','"
+ tbcusinfo.getEmail() + "')");
}
}
关于Dao新增方法,我运行之后会报以下错误,并且会指向上面红色部分,请各位帮我看一下。应要怎样改。
java.sql.SQLException: Invalid state, the Connection object is closed.
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1634)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.createStatement(ConnectionJDBC2.java:2242)
at com.lzw.dao.Dao.insert(Dao.java:36)
at com.lzw.dao.Dao.addCus(Dao.java:106)
at internal.cus.Cust$buttonaddActionListener.actionPerformed(Cust.java:161)
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:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
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:4574)
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:2475)
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)
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import com.lzw.model.TbCusinfo;
import com.lzw.model.Tfoperater;public class Dao {
protected static String dbClassName = "net.sourceforge.jtds.jdbc.Driver";
protected static String dbUrl = "jdbc:jtds:sqlserver://localhost:1433;"
+ "DatabaseName=db_test;SelectMethod=Cursor";
protected static String dbUser="sa";
protected static String dbPass="";
public static Connection conn=null;
static{
try{
if(conn == null){
Class.forName(dbClassName).newInstance();
conn=DriverManager.getConnection(dbUrl,dbUser,dbPass);
}
}catch(Exception e){
e.printStackTrace();
}
}
private Dao(){
}
//新增方法
public static boolean insert(String sql) {
boolean result = false;
try{
Statement st=conn.createStatement();
result = st.execute(sql);
}catch(SQLException e){
e.printStackTrace();
}
return result;
} //修改方法
public static int update(String sql){
int result = 0;
try{
if(conn == null) new Dao();
Statement stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}
return result;
}
//删除方法
public static int delete(String sql){
return update(sql);
}
//查询方法
public static ResultSet query(String sql){
ResultSet result = null;
try{
if(conn == null) new Dao();
Statement stmt = conn.createStatement();
result = stmt.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
}
return result;
}
//关闭方法
public static void close(){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
//读取用户方法
public static Tfoperater selectUser(String nameno,String password){
Tfoperater tfoperater = new Tfoperater();
String sql = "select * from tb_operator where nameno='" + nameno + "' and password='"
+ password + "'";
ResultSet rs = query(sql);
try{
if(rs.next()){
tfoperater.setNameno(nameno);
tfoperater.setPassword(password);
}
}catch(Exception e){
e.printStackTrace();
}
Dao.close();
return tfoperater;
}
//执行指定查询
public static ResultSet zdquery(String zdno){
ResultSet set = query(zdno);
return set;
}
//添加客户信息的方法
public static boolean addCus(TbCusinfo tbcusinfo){
if(tbcusinfo==null)
return false;
return insert("insert tb_cusinfo values('" + tbcusinfo.getCus_no() + "','"
+ tbcusinfo.getName() + "','" + tbcusinfo.getSnm() + "','"
+ tbcusinfo.getPost() + "','" + tbcusinfo.getTel() + "','"
+ tbcusinfo.getFax() + "','" + tbcusinfo.getTelpople() + "','"
+ tbcusinfo.getAddress() + "','" + tbcusinfo.getBank() + "','"
+ tbcusinfo.getBankno() + "','"
+ tbcusinfo.getEmail() + "')");
}
}
关于Dao新增方法,我运行之后会报以下错误,并且会指向上面红色部分,请各位帮我看一下。应要怎样改。
java.sql.SQLException: Invalid state, the Connection object is closed.
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1634)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.createStatement(ConnectionJDBC2.java:2242)
at com.lzw.dao.Dao.insert(Dao.java:36)
at com.lzw.dao.Dao.addCus(Dao.java:106)
at internal.cus.Cust$buttonaddActionListener.actionPerformed(Cust.java:161)
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:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
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:4574)
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:2475)
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)
解决方案 »
- java 实现多线程的2种方法有什么区别?
- 一个java数组赋值的问题
- JButton 图片
- java中如果字符串中有多个'\',只能一个个改成'\\'么?没有C#中 @'c:\files\';这样的方法吗?
- 多线程Socket聊天中来自一client的信息怎么发送给别的client?
- 菜鸟问题:没有Keyboard类怎么办
- 数据库问题
- 关于MySQL数据库与java的连接问题
- 初学者问题,求书!!!!!1
- 初学java,急,请帮忙!
- 如何用java发送post请求,重要的是将textarea中的内容也发送过去?请教高手![
- netbeans 开发RCP时,新文件支持中怎么运用“新建文件”的问题
用的时候会报:链接已关闭。
selectUser里有使用Dao.close。你的conn是静态的。你这样使用的话全局只有一个conn,既然只有一个,那就不要做close操作了