本帖最后由 王绪超丶 于 2014-5-19 11:34 编辑
Servlet&JSP课上到JavaBeans部分,NIIT课本上有一个小案例要求用到JavaBean,需要用到数据库,要配DSN。
问题关键是还是SQL server 。可惜啊。虽然上学期NIIT课程里教的就是SQL server ,虽然我期末考试SQL server 只扣了一分。但是我不会SQL server 。当时电脑装不上SQL server ,所以学SQL时用的是Mysql。然后干脆图省事。Mysql一条路走到黑吧。
JavaBean连接Mysql两种方式。(1)通过DSN。(2)JDBC直接连Mysql。
Mysql的DSN方式连接数据库没弄出来。。。
DSN方式要下载Mysql-ODBC驱动,然后再配置DSN数据源。
我电脑JDK是1.8的,JDK1.8里没有JDBC-ODBC驱动类 。
然后装了JDK1.6 ,然后编码连接,JavaBean里的核心代码如下:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:odbc:ali","root","root");
ali 是我的Mysql数据源名称。
然后没有成功。。。
难道是64位JDK和32位Mysql之间的问题?。。。。。。。
算了。。。不想那么多了。。。。既然JDK1.8都抛弃了ODBC。。。。那么以后就用非DSN的JavaBean直接Mysql连接方式吧。。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我是分割~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面是成功的非DSN方式。
准备好所需环境:
1)数据库 Mysql (推荐用集成开发环境WAMP,或者phpStudy。省去配置的复杂操作)
2)数据库管理工具 Navicat for MySQL
3)JDBC-Mysql驱动 mysql-connector-java-5.0.4-bin.jar
4)NetBeans,JDK
步骤:
(1)将下载好的JDBC-Mysql驱动(mysql-connector-java-5.0.4-bin.jar)放入JDK中
,放入的路径为Java\jdk1.8.0\jre\lib\ext (其实咱们孔老师说的好,放在WEB-INF\lib里才科学。但是这样也可以啦,凑合着用用)
(2)建立数据库及表。(test数据库,authors表)
(3)编写 JavaBean的代码
这其实是
加载JDBC -Mysql驱动类
并根据Mysql的配置信息得到一个URL,然后根据URL建立JDBC-Mysql连接。
package JavaBeans;
import java.io.Serializable;
import java.util.*;
import java.sql.*;
public class FindAuthor implements Serializable {
public String url, authorName, driverName, authorId;
public Vector result;
private String server = "localhost";
private String port = "3306"; //Mysql端口
private String db = "test"; //连接的数据库
private String user = "root"; //数据库用户名
private String pass = "root"; //数据库密码
private String drivername = "com.mysql.jdbc.Driver"; //jdbc-mysql驱动类
private String URL = "jdbc:mysql://" + server + ":" + port + "/" + db
+ "?useUnicode=true&characterEncoding=UTF-8&user=" + user + "&password=" + pass;
public Vector getResult() {
Vector v = new Vector();
try {
Class.forName(drivername); //加载驱动
Connection con = DriverManager.getConnection(URL, "root", "root");//创建一个数据库连接
PreparedStatement stat = con.prepareStatement("select * from authors where au_id=?");
stat.setString(1, authorId);//设置要查询的作者名
ResultSet rs = stat.executeQuery();//获取查询结果
if (rs.next()) {//存储结果到向量(vector)V中
v.addElement(rs.getString("au_fname"));
v.addElement(rs.getString("address"));
v.addElement(rs.getString("city"));
v.addElement(rs.getString("state"));
v.addElement(rs.getString("zip"));
}
} catch (Exception ex) {
ex.printStackTrace(); //处理异常
}
//返回结果
this.result = v;
return result;
}
public void setAuthorId(String authorId) {
if (authorId != null) {
this.authorId = authorId;
}
}
public String getAuthorId() {
return (this.authorId);
}
//定义一个从author数据库里获取结果的方法
}
(4)运行,出结果。。。(测试用的JSP的代码和web.xml我就不放上来了)
Java EE 这条路,慢慢爬ing….