java访问mysql数据库的问题 不知道你为什么不使用org.gjt.mm.mysql.Driver,如果你的哪个驱动可用,问题一定不是出现在数据库上,不知道能不能把你程序贴出来看看。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.你的数据库可以连接吗???2.如果连接成功的话那应该是你的程序的问题...把代码贴出来看看...3.我用MYSQL的时候是可以用这些方法的... <!-- jsp程序如下 --><%@ page contentType="text/html; charset=gb2312" %><%@ page import = "java.sql.*" %><jsp:useBean id="basicDB" class="bbs.basicDBBean" scope="page" /><html><head><title>main</title><link href="css/main" rel="stylesheet" type="text/css"></head><body bgcolor="#ffffff" leftmargin="0" topmargin="0" align=center valign=middle><br><div align="center" style="font-size:14pt;color:black">我的留言板</div><br><table width="760" border="0" align="center" cellpadding="2" cellspacing="2" class="n9pt"> <tr> <td width="500" bgcolor="#cccccc"> <div align="center"><font color="#ffffff">标题</font></div> </td> <td width="130" bgcolor="#cccccc"> <div align="center"><font color="#ffffff">作者</font></div> </td> <td width="130" bgcolor="#cccccc"> <div align="center"><font color="#ffffff">发表时间</font></div> </td> </tr> <% String sql; ResultSet rs; //lyb表中字段为id(int),title(varchar),author(varchar),addtime(datetime) sql = "select * from lyb order by addtime desc"; basicDB.DBConnect(); rs = basicDB.executeQuery(sql); while (rs.next()) { out.print("<tr><td width=500 bgcolor=#eeeeee><a href=view.jsp?id="); out.print(rs.getInt("id"));//换成rs.getInt(1)就行了 out.print(" target=bottom> "); out.print(rs.getString("title"));//换成rs.getString(2)就行了 out.print("</a></td><td width=130 bgcolor=#eeeeee><div align=center>"); out.print(rs.getString("author"));//换成rs.getString(3)就行了 out.print("</div></td><td width=130 bgcolor=#eeeeee><div align=center>"); out.print(rs.getString("addtime"));//换成rs.getString(4)就行了 out.print("</div></td></tr>"); } %></table></body></html><!-- 另外,如果我要得到ResultSetMetaData对象的话将得到一个null型值--> org.gjt.mm.mysql.Drive换这个驱动看看 用org.gjt.mm.mysql.Drive驱动结果还是一样,仍然不能用字段名访问数据!!!还会有其他原因吗???? 可能是你的bean有问题,楼主可以先写段简单的代码测试一下你那个BEAN是否可用或者把你的bean贴出来让大家看看 package bbs;import java.sql.*;/** * 一个简单而基本的数据库连接类 * 缺省使用JDBC-MYSQL桥接驱动程序 *缺省使用jdbc:mysql://localhost:3306/basiclyb * @author zhou * @version 0.1 * @see java.sql.Connection * @see java.sql.ResultSet */public class basicDBBean { //成员变量 private String DBLocation = "jdbc:mysql://localhost:3306/basiclyb?useUnicode=true&characterEncoding=8859_1"; //使用JDBC-MYSQL桥接驱动程序 private String DBDriver = "com.mysql.jdbc.Driver"; //查询结果的记录集 private ResultSet rs = null; //数据库连接 private Connection conn = null; /**构造函数*/ public basicDBBean() { } /** *执行一个查询 * @param sql 需要执行的查询字符串 * @return 查询的结果集 * @see java.sql.ResultSet * @see java.sql.Connection */ public ResultSet executeQuery(String sql){ if (conn == null){ DBConnect(); } if (conn == null){ rs = null; } else { try { Statement s = conn.createStatement(); rs = s.executeQuery(sql); } catch (SQLException e){ } } return rs; } /** * 试着建立连接过程中的异常信息,如果一切正常,返回一个空字符串 * @see java.sql.Connection */ public String DBConnect(){ String strExc = ""; try { Class.forName(DBDriver); conn = DriverManager.getConnection(DBLocation,"root",""); } catch (ClassNotFoundException e) { strExc = e.toString(); } catch (SQLException e) { strExc = e.toString(); } return strExc; } /** * 设置一个可用的数据地址 * @param location 数据源地址 */ public void setDBLocation(String location){ DBLocation = location; } /** * 设置一个JDBC驱动程序 * @param driver 一个JDBC驱动器 */ public void setDBDriver(String driver){ DBDriver = driver; } /** * 设置一个已经可用的数据库连接 * @param conn 一个数据库连接对象 * @see java.sql.Connection */ public void setConn(Connection conn){ conn = conn; } /** * 获得当前的数据源地址 * @return 当前的数据源地址 */ public String getDBLocation(){ return DBLocation; } /** * 获得当前的JDBC驱动器 * @return 当前的JDBC驱动器 */ public String getDBDriver(){ return DBDriver; } /** * 获得当前的结果记录集 * @return 当前的结果记录集 * @see java.sql.ResultSet */ public ResultSet getRS(){ return rs; } /** *获得当前的数据库连接 * @return 当前的数据库连接 * @see java.sql.Connection */ public Connection getconn(){ return conn; }}//我认为和BEAN没关系,因为我没用BEAN时也是一样!你们是不是都可以的? 驱动程序有问题,用org.gjt.mm.mysql.Driver就应该没问题了的。 org.gjt.mm.mysql.Driver是在哪下载的?我下载了一个使用后,好象还有这样的问题存在,就是不能通过getString(String fieldname)进行访问数据,抛出的异常还是找不到fieldname。有没有人把自己写的这样的代码贴出来让我看看? 我也曾经碰到过你一样的问题。我猜你的问题就出现在注册数据库url上。你下载mysql驱动的时候应该还有一个readme文件。注意了,你最好仔细阅读这个文件。里面有连接数据库url的各种附加参数。如果你仅仅用:jdbc:mysql://localhost:3306/your_database来连接,就会出现你的问题。应该加参数encoding=gb2312&character=true(具体我也记的很清楚了^_^),也就是:jdbc:mysql://localhost:3306/your_database?encoding=gb2312&character=true(好像还要一个参数).另外,假设你不加参数,你可以用getString(1),getString(2)...,等来获得记录的值,但是会乱码的。 补充:个人认为mysql的驱动中COM.MYSQL.JDBC.DRIVER是做得最好的,关键是你要会用. ResultSet rs=databean.Query(sql); ResultSetMetaData rsm=rs.getMetaData(); java多线程 接口,类和对象的关系 强力求助啊。!!!!!急啊。。。。 JAR包是如何被使用的 一个servlet中的问题 找工作进来,金蝶软件公司j2ee题目 几个和weblogic有关的问题 关于EJB发布的问题 JBuilder 8.0如何配WebLogic 8.1做为服务器? 我的JBuilder7为什么隔一会儿就闪一下啊??不知道哪位大侠能帮忙解决一下? windowxp上运行得好好的ejb程序,到2000出错了? J2EE VS .NET
2.如果连接成功的话那应该是你的程序的问题...把代码贴出来看看...
3.我用MYSQL的时候是可以用这些方法的...
<%@ page import = "java.sql.*" %><jsp:useBean id="basicDB" class="bbs.basicDBBean" scope="page" />
<html>
<head>
<title>
main
</title>
<link href="css/main" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#ffffff" leftmargin="0" topmargin="0" align=center valign=middle>
<br><div align="center" style="font-size:14pt;color:black">我的留言板</div><br>
<table width="760" border="0" align="center" cellpadding="2" cellspacing="2" class="n9pt">
<tr>
<td width="500" bgcolor="#cccccc">
<div align="center"><font color="#ffffff">标题</font></div>
</td>
<td width="130" bgcolor="#cccccc">
<div align="center"><font color="#ffffff">作者</font></div>
</td>
<td width="130" bgcolor="#cccccc">
<div align="center"><font color="#ffffff">发表时间</font></div>
</td>
</tr>
<%
String sql;
ResultSet rs;
//lyb表中字段为id(int),title(varchar),author(varchar),addtime(datetime)
sql = "select * from lyb order by addtime desc";
basicDB.DBConnect();
rs = basicDB.executeQuery(sql); while (rs.next())
{
out.print("<tr><td width=500 bgcolor=#eeeeee><a href=view.jsp?id=");
out.print(rs.getInt("id"));//换成rs.getInt(1)就行了
out.print(" target=bottom> ");
out.print(rs.getString("title"));//换成rs.getString(2)就行了
out.print("</a></td><td width=130 bgcolor=#eeeeee><div align=center>");
out.print(rs.getString("author"));//换成rs.getString(3)就行了
out.print("</div></td><td width=130 bgcolor=#eeeeee><div align=center>");
out.print(rs.getString("addtime"));//换成rs.getString(4)就行了
out.print("</div></td></tr>");
}
%>
</table>
</body>
</html><!--
另外,如果我要得到ResultSetMetaData对象的话将得到一个null型值
-->
换这个驱动看看
用org.gjt.mm.mysql.Drive驱动结果还是一样,仍然不能用字段名访问数据!!!
还会有其他原因吗????
或者把你的bean贴出来让大家看看
import java.sql.*;/**
* 一个简单而基本的数据库连接类
* 缺省使用JDBC-MYSQL桥接驱动程序
*缺省使用jdbc:mysql://localhost:3306/basiclyb
* @author zhou
* @version 0.1
* @see java.sql.Connection
* @see java.sql.ResultSet
*/public class basicDBBean {
//成员变量
private String DBLocation = "jdbc:mysql://localhost:3306/basiclyb?useUnicode=true&characterEncoding=8859_1";
//使用JDBC-MYSQL桥接驱动程序
private String DBDriver = "com.mysql.jdbc.Driver";
//查询结果的记录集
private ResultSet rs = null;
//数据库连接
private Connection conn = null; /**构造函数*/
public basicDBBean() {
} /**
*执行一个查询
* @param sql 需要执行的查询字符串
* @return 查询的结果集
* @see java.sql.ResultSet
* @see java.sql.Connection
*/
public ResultSet executeQuery(String sql){
if (conn == null){
DBConnect();
} if (conn == null){
rs = null;
}
else {
try {
Statement s = conn.createStatement();
rs = s.executeQuery(sql);
}
catch (SQLException e){ }
} return rs;
} /**
* 试着建立连接过程中的异常信息,如果一切正常,返回一个空字符串
* @see java.sql.Connection
*/
public String DBConnect(){
String strExc = "";
try {
Class.forName(DBDriver);
conn = DriverManager.getConnection(DBLocation,"root","");
}
catch (ClassNotFoundException e) {
strExc = e.toString();
}
catch (SQLException e) {
strExc = e.toString();
} return strExc;
} /**
* 设置一个可用的数据地址
* @param location 数据源地址
*/
public void setDBLocation(String location){
DBLocation = location;
} /**
* 设置一个JDBC驱动程序
* @param driver 一个JDBC驱动器
*/
public void setDBDriver(String driver){
DBDriver = driver;
} /**
* 设置一个已经可用的数据库连接
* @param conn 一个数据库连接对象
* @see java.sql.Connection
*/
public void setConn(Connection conn){
conn = conn;
} /**
* 获得当前的数据源地址
* @return 当前的数据源地址
*/
public String getDBLocation(){
return DBLocation;
} /**
* 获得当前的JDBC驱动器
* @return 当前的JDBC驱动器
*/
public String getDBDriver(){
return DBDriver;
} /**
* 获得当前的结果记录集
* @return 当前的结果记录集
* @see java.sql.ResultSet
*/
public ResultSet getRS(){
return rs;
} /**
*获得当前的数据库连接
* @return 当前的数据库连接
* @see java.sql.Connection
*/
public Connection getconn(){
return conn;
}
}
//我认为和BEAN没关系,因为我没用BEAN时也是一样!你们是不是都可以的?
我下载了一个使用后,好象还有这样的问题存在,就是不能通过getString(String fieldname)
进行访问数据,抛出的异常还是找不到fieldname。
有没有人把自己写的这样的代码贴出来让我看看?
你下载mysql驱动的时候应该还有一个readme文件。注意了,你最好仔细阅读这个文件。里面有连接数据库url的各种附加参数。如果你仅仅用:jdbc:mysql://localhost:3306/your_database来连接,就会出现你的问题。应该加参数encoding=gb2312&character=true(具体我也记的很清楚了^_^),也就是:jdbc:mysql://localhost:3306/your_database?encoding=gb2312&character=true(好像还要一个参数).
另外,假设你不加参数,你可以用getString(1),getString(2)...,等来获得记录的值,但是会乱码的。
ResultSetMetaData rsm=rs.getMetaData();