java和mysql的连接,驱动是要和mysql版本相对应的吗?

java和mysql的连接,驱动是要和mysql版本相对应的吗?,第1张

当然最好是mysql版本对应相应的驱动,但高版本的驱动一般都能兼容低版本的。首先得保证有驱动,数据库连接权限,驱动要放进自己的程序里,一般没什么问题,给你一个程序,也是刚才别人问我的,他的程序没有问题。

import java.sql.*

public class Conn {

private static Connection con

private Statement stmt

private ResultSet rs

private static final String drivername ="com.mysql.jdbc.Driver"//"com.microsoft.jdbc.sqlserver.SQLServerDriver"

private static final String url ="jdbc:mysql://localhost:3306/test"//"jdbc:microsoft:sqlserver://localhost:1433DatabaseName=planeuser=sapassword=sqlserver"

public static synchronized Connection getCon() throws Exception {

try {

Class.forName(drivername)

con = DriverManager.getConnection(url,"root","root")//写上自己的用户和密码

return con

} catch (SQLException e) {

System.err.println(e.getMessage())

throw e

}

}

public Statement getStmtread() {

try {

con = getCon()

stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY)

return stmt

} catch (Exception e) {

System.err.println(e.getMessage())

e.printStackTrace()

}

return null

}

public ResultSet getRs(String sql) {

try {

stmt = getStmtread()

rs = stmt.executeQuery(sql)

return rs

} catch (Exception e) {

System.err.println(e.getMessage())

e.printStackTrace()

}

return null

}

public Statement getStmt() {

try {

con = getCon()

stmt = con.createStatement()

return stmt

} catch (Exception e) {

System.err.println(e.getMessage())

e.printStackTrace()

}

return null

}

public synchronized void close() {

try {

if (rs != null) {

rs.close()

rs = null

}

} catch (Exception e) {

System.err.println(e.getMessage())

e.printStackTrace()

}

try {

if (stmt != null) {

stmt.close()

stmt = null

}

} catch (Exception e) {

System.err.println(e.getMessage())

e.printStackTrace()

}

try {

if (con != null) {

con.close()

con = null

}

} catch (Exception e) {

System.err.println(e.getMessage())

e.printStackTrace()

}

}

public static void main(String[]args) throws Exception {

Conn c = new Conn()

c.getCon()

ResultSet rs = c.getRs("select * from user")

while(rs!=null&&rs.next()) {

System.out.println(rs.getString("username"))

}

}

}

这跟Mysql的版本和JDK的版本升级是有关系的,Mysql从3.x 4.x 到5.x都不同版本的mysql-connector/J,在Mysql官网可以看到每个版本的mysql-connector/J的ChangeLog,现有的版本号是:

5.1.x、5.0.x、3.1.x、3.0.x、2.0.x和1.2.x,每一个版本的初始版本号(比如5.1.0)都对Mysql进行了更好的支持,比如5.1.0 为07年开发的,从这一版本的ChangeLog可以支持JAVA6平台的兼容问题得到了更好的解决。最新的5.1.33对JAVA7也有了很好的支持,所以兼容问题也要看JDK的版本,并且它每一版都处理了很多BUG或加入了很多对新版Mysql支持的新特性,但如果你只是用来连接数据库,不需要用特性,可以说从3.1.x以后的版本都对mysql 5.x支持,也就是可以直接连接你的数据库。所以对于5.5.35用mysql-connector-java-5.1.7是完全没有问题的。希望能帮助到你

路径不同,使用命令不同。

1、5.7版本的mysql驱动路径是5.7的驱动包,8.0以上是8的驱动包。

2、8.0以上的mysql版本驱动时使用命令中的pwd需要去掉,而5.7版本的保留IDENTIFIEDBYpwd。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9618197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存