我对 Android 和 Eclipse 有点陌生。我正在尝试将我的 Android 应用程序与 SQL Server 数据库连接,但总是出现错误。 有人可以帮助我吗? 谢谢你。
这是我的代码:
public class DBConnection {
private static DBConnection instance = null;
private DBConnection(){}
private static final String SERVER = "server";
private static final String INSTANC = "instance";
private static final String BBDD = "db";
private static final String USER = "user";
private static final String PASS = "pass";
private static Connection connection = null;
public static DBConnection getInstance(){
if(instance == null){
instance = new DBConnection();
}
return instance;
}
private Connection conectar(){
Connection conn = null;
String connString;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
connString = "jdbc:jtds:sqlserver://" + SERVER + ";"
+ "instance=" + INSTANC + ";"
+ "databaseName=" + BBDD + ";"
+ "user=" + USER + ";"
+ "password=" + PASS + ";";
conn = DriverManager.getConnection(connString);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public Connection getConnection(){
if(connection == null){
connection = conectar();
}
return connection;
}
public static ResultSet devuelveResultSet(String query){
ResultSet result=null;
try {
Statement statement= connection.createStatement();
result=statement.executeQuery(query);
} catch (SQLException e){
e.printStackTrace();
}
return result;
}
}
这是我的错误痕迹:
01-21 09:48:28.908: E/AndroidRuntime(2178): FATAL EXCEPTION: main
01-21 09:48:28.908: E/AndroidRuntime(2178): java.lang.NoSuchMethodError: java.lang.String.isEmpty
01-21 09:48:28.908: E/AndroidRuntime(2178): at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:282)
01-21 09:48:28.908: E/AndroidRuntime(2178): at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:251)
01-21 09:48:28.908: E/AndroidRuntime(2178): at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:331)
01-21 09:48:28.908: E/AndroidRuntime(2178): at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
01-21 09:48:28.908: E/AndroidRuntime(2178): at java.sql.DriverManager.getConnection(DriverManager.java:191)
01-21 09:48:28.908: E/AndroidRuntime(2178): at java.sql.DriverManager.getConnection(DriverManager.java:154)
01-21 09:48:28.908: E/AndroidRuntime(2178): at sql.DBConnection.conectar(DBConnection.java:43)
01-21 09:48:28.908: E/AndroidRuntime(2178): at sql.DBConnection.getConnection(DBConnection.java:57)
01-21 09:48:28.908: E/AndroidRuntime(2178): at com.engineering.ecg.ListinTelefonico.onCreate(ListinTelefonico.java:39)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.os.Looper.loop(Looper.java:123)
01-21 09:48:28.908: E/AndroidRuntime(2178): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-21 09:48:28.908: E/AndroidRuntime(2178): at java.lang.reflect.Method.invokeNative(Native Method)
01-21 09:48:28.908: E/AndroidRuntime(2178): at java.lang.reflect.Method.invoke(Method.java:521)
01-21 09:48:28.908: E/AndroidRuntime(2178): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-21 09:48:28.908: E/AndroidRuntime(2178): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-21 09:48:28.908: E/AndroidRuntime(2178): at dalvik.system.NativeStart.main(Native Method)
问题似乎出在数据库的服务器端。 试试这个方法:
public Connection getConnection() throws SQLException {
Connection conn = null;
Properties connectionProps = new Properties();
connectionProps.put("user", this.userName);
connectionProps.put("password", this.password);
if (this.dbms.equals("mysql")) {
conn = DriverManager.getConnection(
"jdbc:" + this.dbms + "://" +
this.serverName +
":" + this.portNumber + "/",
connectionProps);
} else if (this.dbms.equals("derby")) {
conn = DriverManager.getConnection(
"jdbc:" + this.dbms + ":" +
this.dbName +
";create=true",
connectionProps);
}
System.out.println("Connected to database");
return conn;
}
如果这不起作用,请发布课程的其余部分。 有关 Java 中的数据库的更多信息:JDBC Oracle