查询方法
package com.lz.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.lz.model.Tboperater;
import com.lz.model.Tbso;
public class Dao {
protected static String dbClassName = "net.sourceforge.jtds.jdbc.Driver";
protected static String dbUrl = "jdbc:jtds:sqlserver://localhost:1433;"
+ "DatabaseName=db_003;SelectMethod=Cursor";
protected static String dbUser = "sa";
protected static String dbPwd = "";
protected static String second = null;
public static Connection conn = null;
static {
try {
if (conn == null) {
Class.forName(dbClassName).newInstance();
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
private Dao() {
}
//新增方法
private static boolean insert(String sql){
boolean result = false;
try{
if(conn == null) new Dao();
Statement stmt = conn.createStatement();
result = stmt.execute(sql);
}catch(Exception e){
e.printStackTrace();
}
return result;
}
//修改方法
private 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;
}
//删除方法
private static int delete(String sql){
return update(sql);
}
//查询方法
private static ResultSet query(String sql) { //查询方法
if (conn == null)
return null;
ResultSet rs = null;
try {
Statement stmt = null;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
//关闭方法
private static void close(){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
//读取用户方法
public static Tboperater selectUser(String nameno,String password){
Tboperater tboperater = new Tboperater();
String sql = "select * from tb_operater where nameno='" + nameno + "' and password='"
+ password + "'";
ResultSet rs = Dao.query(sql);
try{
if(rs.next()){
tboperater.setNameno(rs.getString("nameno"));
tboperater.setPassword(rs.getString("password"));
}
} catch (Exception e) {
e.printStackTrace();
}
Dao.close();
return tboperater;
}
public static List selecttbso(){
List list = new ArrayList();
String sql = "select * from hyso11";
ResultSet rs = Dao.query(sql);
try{
if(rs.next()){
Tbso tbso = new Tbso();
tbso.setOs_dd(rs.getDate("os_dd"));
tbso.setOs_no(rs.getString("os_no"));
tbso.setName(rs.getString("name"));
tbso.setPrd_no(rs.getString("prd_no"));
tbso.setPrd_name(rs.getString("prd_name"));
tbso.setSpc(rs.getString("spc"));
tbso.setQty(rs.getDouble("qty"));
tbso.setQty_ps(rs.getDouble("qty_ps"));
tbso.setUp(rs.getDouble("up"));
tbso.setCus_os_no(rs.getString("cus_os_no"));
tbso.setEst_dd(rs.getDate("est_dd"));
tbso.setChk_man(rs.getString("chk_man"));
tbso.setCls_id(rs.getString("cls_id"));
list.add(tbso);
}
}catch(Exception ee){
ee.printStackTrace();
}
return list;
}
}
提示: 就是对应上面红色部分
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:2250)
at com.lz.dao.Dao.query(Dao.java:71)
at com.lz.dao.Dao.selecttbso(Dao.java:110)
at com.lzw.pos.JXCFrame.<init>(JXCFrame.java:99)
at com.lzw.login.Login$buttonEnterListener.actionPerformed(Login.java:70)
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.lang.NullPointerException
at com.lz.dao.Dao.selecttbso(Dao.java:112)
at com.lzw.pos.JXCFrame.<init>(JXCFrame.java:99)
at com.lzw.login.Login$buttonEnterListener.actionPerformed(Login.java:70)
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)
--------------------编程问答-------------------- if (conn == null) 你只判断他是否为空 但是连接已经关掉了
但是内存并没释放掉 所以出了你这个错
你还是在网上搜下别人整理的额 JDBC连接工具类吧
你的写的比较零散 从始至终没见一个finally --------------------编程问答-------------------- 楼上说的基本正确,静态连接对象关闭之后内存并没有释放掉。如果一定要加判断可以这样:
if(conn == null || conn.isClosed()) new Dao();
补充:Java , Java相关