当前位置:  技术问答>java相关

为什么就是不能链接数据库?

    来源: 互联网  发布时间:2017-05-01

    本文导语:  我有个链接数据库的class,如下: package DB; import java.sql.*; import java.io.*; public class connectDB { String sDBDriver="org.gjt.mm.mysql.Driver"; String DBname="dbase";///重点的一句 String sUrl="jdbc:mysql://localhost/"+DBname; String DBusername="kafe";...

我有个链接数据库的class,如下:
package DB;
import java.sql.*;
import java.io.*;

public class connectDB
{
String sDBDriver="org.gjt.mm.mysql.Driver";
String DBname="dbase";///重点的一句
String sUrl="jdbc:mysql://localhost/"+DBname;
String DBusername="kafe";
String DBpassword="81yjuly05d";
Connection conn=null;
public void setDBname(String DBname)
{
this.DBname=DBname; 
}
public void connect()
{
try
{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.out.println("It can't connect the Datebase!!!");
}

}
public ResultSet queryDB(String sSql)
{
ResultSet RS=null;
try
{
conn=DriverManager.getConnection(sUrl,DBusername,DBpassword);
Statement stmt=conn.createStatement();
RS=stmt.executeQuery(sSql);
stmt.close();
conn.close();
}
catch(SQLException ex)
{
System.out.println("It can't run this SQL:"+sSql);
}
return RS;
}

使用的jsp文件如下:



―――――――――――

但是如果我将class中的那句
String DBname="dbase"改成:public String Dbname;
再在class中加
public void setDBname(String DBname)
{
this.DBname=DBname; 
}
public String getDBname()
{
return this.DBname;
}

再jsp中改成



就说有错误。

但如果不链接数据库,只是赋值Dbname,和现实赋值是可以的,即:



这样的话是可以现实dbase的。

证明Dbname是有赋值的,但是为什么我第二段的jsp就不成功呢??


错误信息如下:
java.lang.NullPointerException
at _jsp._message._testmessage2__jsp._jspService(/jsp/message/testmessage2.jsp:8)
at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
at com.caucho.jsp.Page.subservice(Page.java:485)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:181)
at com.caucho.server.http.Invocation.service(Invocation.java:291)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:217)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:159)
at com.caucho.server.TcpConnection.run(TcpConnection.java:136)
at java.lang.Thread.run(Thread.java:536)




|
最好你在getConnection的时候再组合字符串
String sUrl="jdbc:mysql://localhost/";
String DBname = "";
.
.
.

conn=DriverManager.getConnection(sUrl + DBname,DBusername,DBpassword);

|
你的问题出在String sUrl="jdbc:mysql://localhost/"+DBname;这句上。
如果你用“public String DBname;”,则DBname没有初始化,为null值,然后你使用的时候,就会报错的。最好在定义DBname时赋给它一个空字符串,这样就不会报错了。

|
哦,知道了,你创建数据库连接的时候,创建失败,返回的conn为null,然后你使用的时候就会报错的。你的sUrl在对象建立的时候已经初始化了,你再改变DBname的值也没有用了。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3