这个项目原本是在window上连接好sql server的,前段时间换了台mac电脑,没有装双系统,结果不能使用sql server。只能改连接my sql,折腾了一天。现贴上连接这两个数据库的代码对比图和一些细节区别。
连接sql server:
package dbBean;
import java.sql.*;
public class DBBean
{
private String driverStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String connStr = "jdbc:sqlserver://localhost:1433;DatabaseName=TEST_06";
private String username="sa";//这里填数据库的用户名
private String password="sasa";//这里是数据库密码
private Connection conn = null;
private Statement stmt = null;
public DBBean()
{
try {
Class.forName(driverStr);
}
catch(ClassNotFoundException ex) {
System.out.println(ex.getMessage());
}
}
public void setDriverStr(String dstr)
{
driverStr=dstr;
}
public void setConnStr(String cstr)
{
connStr=cstr;
}
public ResultSet executeQuery(String sql)
{
ResultSet rs = null;
try {
conn = DriverManager.getConnection(connStr,username,password);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.out.println(ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql)
{
int result=0;
try{
conn = DriverManager.getConnection(connStr,username,password);
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
}
catch(SQLException ex){
System.out.println(ex.getMessage());
}
return result;
}
public void close()
{
try{
stmt.close();
conn.close();
}
catch(SQLException ex){
System.out.println(ex.getMessage());
}
}
}
连接my sql:
package dbBean;
import java.sql.*;
public class DBBean
{
private String driverStr = "com.mysql.jdbc.Driver";
private String connStr = "jdbc:mysql://127.0.0.1:3306/bookstore?useUnicode=true&characterEncoding=utf-8";
private String username="root";//数据库用户名
private String password="123456";//数据库密码
private Connection conn = null;
private Statement stmt = null;
public DBBean()
{
try {
Class.forName(driverStr);
}
catch(ClassNotFoundException ex) {
System.out.println(ex.getMessage());
}
}
public void setDriverStr(String dstr)
{
driverStr=dstr;
}
public void setConnStr(String cstr)
{
connStr=cstr;
}
public ResultSet executeQuery(String sql)
{
ResultSet rs = null;
try {
conn = DriverManager.getConnection(connStr,username,password);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.out.println(ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql)
{
int result=0;
try{
conn = DriverManager.getConnection(connStr,username,password);
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
}
catch(SQLException ex){
System.out.println(ex.getMessage());
}
return result;
}
public void close()
{
try{
stmt.close();
conn.close();
}
catch(SQLException ex){
System.out.println(ex.getMessage());
}
}
}
可以看到,除了连接和加载驱动语句不同外,这两个数据库其它方法基本可以通用。但在细节方面需要注意的是:
1.连接sql server时,可以使用"select * from [user]..."语句,但my sql识别不了,必须去掉user的方括号。
2.sql server可以使用getdate()方法,但my sql不可以,需改为now()。
另外,不知道为什么,我将mysql-connector的jar包放在以jdbc命名的libraries里(以前都这样干),却连接不上my sql。把这个包单独拿出来,直接在build path处添加external jar,就连接成功。如下图。
不知缘由,但也是连接数据库出现问题时可以考虑的一种方法。