| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2733 人关注过本帖
标题:ecplise中java 连数据库问题
取消只看楼主 加入收藏
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
 问题点数:0 回复次数:11 
ecplise中java 连数据库问题

package mypackage;

import java.sql.*;

public class DataConnection
{
public static void main(String[] args)
{
String driver = "com.mysql.jdbc.driver";
String url = "jdbc:mysql://localhost/mydatabase";
String user="root";
String password="tiger";
try
{
Class.forName(driver);
Connection con= DriverManager.getConnection(url, user, password);
String insert ="insert friends(id,name) values (?,?)";
PreparedStatement prestatement=con.prepareStatement(insert);
String[] names={"liu","qian","shi","xu","zhou","lu"};
for(int i=0;i<6;i++)
{
prestatement.setInt(1, i);
prestatement.setString(2, names[i]);
prestatement.execute();
}
String query="select * from friends";
ResultSet result=(ResultSet) prestatement.executeQuery(query);
while(result.next())
{
System.out.println(result.getString("name"));
}
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}

}

}
这是我的程序
已经加载了mysql-connector-java-5.0.6-bin.jar和mysql-connector-java-5.0.6-bin-g.jar包
但总是出现
java.lang.ClassNotFoundException: com.mysql.jdbc.driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at mypackage.DataConnection.main(DataConnection.java:16)
这个错误
明明驱动我已经加载了
mysql我用的是5.0
我在网上搜了几天,都没有解决这个问题
大家帮帮我吧


[讨论]ecplise中jsp+mysql问题和大家分享讨论

我用的是ecplise3.2+myecplise5.1.1+Tomcat 5.0+MySQL5.0+jdk1.5
新建项目名为Test,然后在里面新建了mysql.html和mysql.jsp
功能是把mysql.html写的东西传到mysql.jsp中
程序如下:
(2.1)mysql.html

<html>
<head>
<title>mysql.html</title>
</head>
<body>
<form name="form" action="mysql.jsp" method="post">
<p>姓:<input name ="last_name" type="text" id="last_name"></p>
<p>名:<input name="first_name" type="text" id="first_name"></p>
<p>
<input type="submit" value="提交">
<input type="reset" value="取消">
</p>
</form>
</body>
</html>

(2.2)mysql.jsp

<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'mysql.jsp' starting page</title>
</head>
<body>
<h2>将信息存人mysql 中</h2>
<%
Connection con=null;
Statement stmt=null;
Statement stmt1=null;
ResultSet rs=null;
request.setCharacterEncoding("gb2312");
String employee_id=null;
String last_name=request.getParameter("last_name");
String first_name=request.getParameter("first_name");
String birth="1986/10/10";
String sex="F";
String new_last_name="";
String new_first_name="";
%>
从mysql.html接收的信息如下:<br>
姓:<%=last_name %>  
名:<%=first_name %>
<%
try
{
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost/sample_db";
String user="root";
String pass="tiger";
con=DriverManager.getConnection(url,user,pass);
stmt=con.createStatement();
String upd="insert into employee(employee_id,last_name,first_name,birth,sex) values ("+employee_id+",'"+last_name+"','"+first_name+"','"+birth+"','"+sex+"')";
stmt.executeUpdate(upd);
stmt1=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String query="select * from employee";
rs=stmt1.executeQuery(query);
rs.last();
new_last_name=rs.getString("last_name");
new_first_name=rs.getString("first_name");
stmt.close();
stmt1.close();
con.close();
}
catch(SQLException sqle)
{
out.println("sqle="+sqle);
}
finally
{
try
{
if(con!=null)
con.close();
}
catch(SQLException sqle)
{
out.println("sqle="+sqle);
}
}
%>
从employee中取出的新增姓名:<br>
新增姓名:<%=new_last_name+new_first_name %><br>
</body>
</html>

创建一个数据库sample_db并在它下面新建了一个表employee,语句如下
create table employee(
employee_id int unsigned not null auto_increment primary key,
last_name varchar(15) not null,
first_name varchar(15) not null,
birth date not null,
sex enum('M','F') default 'M'
);

当我通过右击项目名,然后选择properties->java build path,选择Libraries标签,
单击Add Externar JARs把mysql-connector-java-5.0.6-bin.jar和mysql-connector-java-5.0.6-bin-g.jar

这2个包加进去时,在mysql.html提交时,会出现如下异常
javax.servlet.ServletException: org.gjt.mm.mysql.Driver
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.mysql_jsp._jspService(mysql_jsp.java:141)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:148)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:69)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.apache.jsp.mysql_jsp._jspService(mysql_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


意思是说没有找到jdbc驱动:ClassNotFoundException
于是我就把刚才加的2个包给移除了
这时我把刚才2个包拷贝到该项目的lib目录下:Test\WebRoot\WEB-INF\lib
重启tomcat,在mysql.html提交时,又出现如下异常
javax.servlet.ServletException: org/aspectj/lang/Signature
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.mysql_jsp._jspService(mysql_jsp.java:141)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.apache.jsp.mysql_jsp._jspService(mysql_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

我上网搜了一下是什么原因,说是少了这个jar包aspectj-1.5.3.jar
于是下了一个,网址是从http://www.eclipse.org/aspectj/downloads.php
解开aspectj-1.5.3.jar 将其中下面的lib包里面的aspectjrt.jar包放到该项目的lib目录下:Test\WebRoot\WEB-INF\lib
即现在该项目lib目录下有3个jar包:mysql-connector-java-5.0.6-bin.jar,
mysql-connector-java-5.0.6-bin-g.jar,aspectj-1.5.3.jar
重启tomcat然后运行项目,一切正常

希望能给大家带来帮助,同时谁知道以上的原因,就一起讨论下哦

[此贴子已经被作者于2007-5-31 17:05:38编辑过]

搜索更多相关主题的帖子: java 数据库 String ecplise 
2007-05-28 17:23
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

你们知道问题在哪儿吗?
教教我啊


专业源于品质
2007-05-28 18:29
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

谢谢楼上几位,我再调试一下


专业源于品质
2007-05-28 22:31
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 
不知怎么搞的现在出现这个问题
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2934)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3255)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1293)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:867)
at mypackage.DataConnection.main(DataConnection.java:25)
程序没变
包导入如下
图片附件: 游客没有浏览图片的权限,请 登录注册


专业源于品质
2007-05-28 23:05
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 
谁帮我看看哦

专业源于品质
2007-05-28 23:06
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

现在变成这个错误了
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2934)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3255)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1293)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:867)
at mypackage.DataConnection.main(DataConnection.java:25)
数据库能写进东西,但字能写入第一个names[0],id能自动增1,但name不要变,总是names[0]


专业源于品质
2007-05-29 00:09
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

我现在能运行了,但我发现一个问题,我也不知道为什么
当我用这些语句
create table friends(
id int auto_increment primary key,
name varchar(30) not null default 'NULL',
description varchar(50)
);
创建表时会出现错误
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2934)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3255)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1293)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:867)
at mypackage.DataConnection.main(DataConnection.java:25)
数据库中有数据:
id name description
1 liu null
当我把原程序中
for(int i=0;i<6;i++)
{
prestatement.setInt(1, i);
prestatement.setString(2, names[i]);
prestatement.execute();
}
中改为for(int i=1;i<6;i++)时,就不会抛出异常
控制台结果为
qian
shi
xu
zhou
lu
数据库中数据为
id name description
1 qian null
2 shi null
3 xu null
4 zhou null
5 lu null
很明显我没有让它显示names[0],但没有抛出异常


专业源于品质
2007-05-29 00:50
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

当我用这些语句
create table friends(
id int primary key,
name varchar(30) not null default 'NULL',
description varchar(50)
);
即把id int auto_increment primary key改为id int primary key
创建表时,就一切正常
也不知道为什么
还有要谢谢楼上的beyond_p
String driver = "com.mysql.jdbc.Driver" D确实要大写
谁能帮我解决这些问题
十分感谢


专业源于品质
2007-05-29 00:55
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

谢谢楼上的,你说的很对,我终于明白了


专业源于品质
2007-05-29 17:15
tigershi10
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-10-12
收藏
得分:0 

也谢谢你,呵呵


专业源于品质
2007-05-29 21:11
快速回复:ecplise中java 连数据库问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036496 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved