ConnSyBase dbSybase2 = ConnSyBase.getInstance();
try {
dbSybase2.beginTransaction();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
报:java.lang.NullPointerException
try {
dbSybase2.beginTransaction();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
报:java.lang.NullPointerException
解决方案 »
- 将JAVA项目打包成exe能运行,但是将其再打包成安装文件,安装后不能运行
- 关于处理Excel的JXL中的SheetSettings
- 请问使用JDOM生成JTree该怎么配置classpath?(java.lang.NoClassDefFoundError: org/jdom/Document)
- Jsp中数据库编程问题.编译无法通过.
- 给SQL Server的image类型字段赋null值,该怎么写?
- 画图问题
- ResultSet的问题?谢谢!!
- 小问题,送分!!
- 调用存储过程的问题,可能很简单,但我却不知道错在哪里
- 关于键盘事件
- 请问这题该怎样给数组来赋值啊?
- java怎么取当天日期的最前最后时刻
public class ConnSyBase { private static ConnSyBase db = null; //数据库库连接对象
private static Connection conn = null; private Statement stmt = null; private boolean hadErrors = false; private ConnSyBase() throws Exception {
if (conn == null) {
Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
String url = "jdbc:sybase:Tds:XXXX:5000/myDB";//myDB为你的数据库名
Properties sysProps = System.getProperties();
sysProps.put("user", "sa"); //设置数据库访问用户名
sysProps.put("password", ""); //密码
Connection conn = DriverManager.getConnection(url, sysProps);
System.out.println("--------success------------in connection");
stmt = conn.createStatement();
}
} public void beginTransaction() throws Exception {
conn.setAutoCommit(false);
} public void commitTransaction() throws Exception {
if (!hadErrors) {
conn.commit();
} else {
conn.rollback();
hadErrors = false;
}
hadErrors = true;
conn.setAutoCommit(true);
} public void ErrorOccur() {
hadErrors = true; } public static ConnSyBase getInstance() {
if (db == null) {
System.out.println("--------ok-----------");
try {
db = new ConnSyBase();
} catch (Exception e) {
conn = null;
Log log = LogFactory.getLog("mylog");
log.error("数据库连接出错-DataStore.java");
return null;
}
}
return db;
} //执行插入,删除和更新操作
synchronized public void execute(String sql) throws SQLException {
if (stmt != null)
stmt.executeUpdate(sql);
else {
Log log = LogFactory.getLog("mylog");
log.error("数据库插入出错");
}
} //执行查询操作
synchronized public ResultSet read(String sql) throws SQLException {
if (stmt != null) {
ResultSet tmp = null;
tmp = stmt.executeQuery(sql);
return tmp;
} else {
return null;
}
} //执行查询个数操作
synchronized public int readCount(String sql) throws SQLException {
int nCount = 0; try {
if (stmt != null) {
ResultSet tmp = null;
if (tmp != null && tmp.next()) {
nCount = tmp.getInt(1);
} else {
nCount = 0;
}
} else {
nCount = 0;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return nCount;
} // 终止数据库的连接
synchronized public void stop() {
try {
if (conn != null) {
conn.close();
stmt.close();
}
} catch (Exception e) {
Log log = LogFactory.getLog("mylog");
log.error("数据库关闭出错-DataStore.java");
} finally {
conn = null;
}
System.out.println("----------connection-------is down");
}
}
这个没有取到Connection连接?
不懂,继续问下
回答的有分,3楼的谢谢
sybase和其它的都一样的,应该
只是事物操作不会,能给我好的例子也行啊
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectionFactory {
private static String DB_DRIVER;
private static String DB_URL;
private static String DB_USER;
private static String DB_PASSWORD;
// 静态变量首先加载private构造
private static ConnectionFactory ref = new ConnectionFactory(); /**
* 一个 singleton
*
* */
public static ConnectionFactory getInstance(){
return ref;
} /**
* 注册jdbc驱动
*
* */
private ConnectionFactory() {
try {
Class.forName(DB_DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} /**
* 获取数据库的一个连接
*
* */
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
} /**
* 关闭ResultSet
*/
public static void close(ResultSet rst) {
if (rst != null) {
try {
rst.close();
rst = null;
} catch (Exception e) {
e.printStackTrace();
}
}
} /**
* 关闭Statement
*/
public static void close(Statement stmt) {
if (stmt != null) {
try {
stmt.close();
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
}
} /**
* 关闭Connection
*/
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}}
Properties pros = new Properties();
try {
File file = new File("DBCONFIG.properties");
pros.load(new FileInputStream(file));
DB_DRIVER = pros.getProperty("DB_DRIVER");
DB_URL = pros.getProperty("DB_URL");
DB_USER = pros.getProperty("DB_USER");
DB_PASSWORD = pros.getProperty("DB_PASSWORD");
}
catch(IOException e){
e.printStatckTrace();
}ps:楼主仔细看看你的
public static ConnSyBase getInstance() {
if (db == null) {
System.out.println("--------ok-----------");
try {
db = new ConnSyBase();
} catch (Exception e) {
conn = null;
Log log = LogFactory.getLog("mylog");
log.error("数据库连接出错-DataStore.java");
return null;
}
}
return db;
}
取得的是null吧!
Connection conn = DriverManager.getConnection(url, sysProps);改成conn = DriverManager.getConnection(url, sysProps);
就ok了,conn被你覆盖了!
String url = "jdbc:sybase:Tds:XXXX:5000/myDB";//myDB为你的数据库名
Properties sysProps = System.getProperties();
sysProps.put("user", "sa"); //设置数据库访问用户名
sysProps.put("password", ""); //密码
Connection conn = DriverManager.getConnection(url, sysProps);
System.out.println("--------success------------in connection");
stmt = conn.createStatement();
报错在 public void beginTransaction() throws Exception {
conn.setAutoCommit(false);
}
java.lang.NullPointerException
at com.jandar.db.ConnSyBase.beginTransaction(ConnSyBase.java:50)
1).
//数据库库连接对象
private static Connection conn = null;
这个conn是属于类的!2).
你的构造:
private ConnSyBase() throws Exception {
if (conn == null) {
Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
String url = "jdbc:sybase:Tds:XXXX:5000/myDB";//myDB为你的数据库名
Properties sysProps = System.getProperties();
sysProps.put("user", "sa"); //设置数据库访问用户名
sysProps.put("password", ""); //密码 // ********** 注意这里,你这里声明了一个局域成员变量conn ,而属于类的conn还是null !
Connection conn = DriverManager.getConnection(url, sysProps);
System.out.println("--------success------------in connection");
stmt = conn.createStatement();
}
}3).
你的beginTransaction里
public void beginTransaction() throws Exception {
// ************ 注意 这里的conn 是null,当然会报NullPointerException了!!
conn.setAutoCommit(false);
}
楼主看出问题了吗?一起学习,一起仔细!
其实问题我已经找出来了,
一直在忙与写程序,现在过来揭贴
非常感谢bootupnow的指导