当前位置: 首页 > 知识库问答 >
问题:

使用android的JDBC驱动程序连接Sql数据库

何禄
2023-03-14

我正在尝试在android应用程序中使用JDBC连接到SQL Server。我导入了sqljdbc4。jar进入我的应用程序,但当我

conn=驾驶员管理器。getConnection(连接字符串);

我得到下面的错误:连接字符串是

jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;加密=快速;用户=用户名;密码=密码;

谁能告诉我出了什么问题吗?如果我将相同的代码放入常规java应用程序中,它运行良好。

基本Java

public class Test {
    public void dbConnect(String db_connect_string, String db_userid,
            String db_password) {
        try {

            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection conn = DriverManager.getConnection(db_connect_string,
                    db_userid, db_password);
            System.out.println("connected");
            Statement statement = conn.createStatement();
            String queryString = "select * from sysobjects where type='u'";
            ResultSet rs = statement.executeQuery(queryString);
            while (rs.next()) {
                System.out.println(rs.getString(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Test connServer = new Test();
        connServer.dbConnect("jdbc:sqlserver://Serverlocalip:1433", "sa",
                "sqlserver");
    }
}

Android代码:

public List<String> dbConnect(String Host, String Port, String db_userid,
            String db_password) {
        List<String> Db_list = new ArrayList<String>();
        try {
            // String ConnectionString = "jdbc:sqlserver://" + Host + ":" +
            // Port;
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection conn = DriverManager.getConnection(
                    "jdbc:sqlserver://Serverlocalip:1433", db_userid,
                    db_password);
            System.out.println("connected");
            Statement statement = conn.createStatement();
            String queryString = "select * from sysobjects where type='u'";
            ResultSet rs = statement.executeQuery(queryString);
            while (rs.next()) {
                System.out.println(rs.getString(1));
                Db_list.add(rs.getString(1));
            }
        } catch (Exception e) {
            Db_list.add("Error");
            e.printStackTrace();
        }
        return Db_list;
    }

错误

07-24 17:25:02.058: W/System.err(22227): com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "Socket closed".
07-24 17:25:02.228: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1352)
07-24 17:25:02.228: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1466)
07-24 17:25:02.228: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1042)
07-24 17:25:02.228: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
07-24 17:25:02.228: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
07-24 17:25:02.228: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
07-24 17:25:02.228: W/System.err(22227):    at java.sql.DriverManager.getConnection(DriverManager.java:175)
07-24 17:25:02.238: W/System.err(22227):    at java.sql.DriverManager.getConnection(DriverManager.java:209)
07-24 17:25:02.238: W/System.err(22227):    at com.example.sqlserverconnector.MainActivity.dbConnect(MainActivity.java:87)
07-24 17:25:02.238: W/System.err(22227):    at com.example.sqlserverconnector.MainActivity$1.onClick(MainActivity.java:39)
07-24 17:25:02.238: W/System.err(22227):    at android.view.View.performClick(View.java:3574)
07-24 17:25:02.238: W/System.err(22227):    at android.view.View$PerformClick.run(View.java:14293)
07-24 17:25:02.238: W/System.err(22227):    at android.os.Handler.handleCallback(Handler.java:605)
07-24 17:25:02.248: W/System.err(22227):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-24 17:25:02.248: W/System.err(22227):    at android.os.Looper.loop(Looper.java:137)
07-24 17:25:02.248: W/System.err(22227):    at android.app.ActivityThread.main(ActivityThread.java:4448)
07-24 17:25:02.248: W/System.err(22227):    at java.lang.reflect.Method.invokeNative(Native Method)
07-24 17:25:02.248: W/System.err(22227):    at java.lang.reflect.Method.invoke(Method.java:511)
07-24 17:25:02.248: W/System.err(22227):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
07-24 17:25:02.248: W/System.err(22227):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
07-24 17:25:02.258: W/System.err(22227):    at dalvik.system.NativeStart.main(Native Method)
07-24 17:25:02.258: W/System.err(22227): Caused by: java.net.SocketException: Socket closed
07-24 17:25:02.318: W/System.err(22227):    at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
07-24 17:25:02.318: W/System.err(22227):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
07-24 17:25:02.318: W/System.err(22227):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:257)
07-24 17:25:02.318: W/System.err(22227):    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1433)

任何帮助将是伟大的和感谢提前

共有1个答案

马坚
2023-03-14

在导入库文件jtds 1.3.0之前,更改目录名和。jar文件。在代码下面进行更改,它会正常工作。。。。。。。。。。。。。

public List<String> dbConnect(String Host, String Port, String db_userid,
                String db_password) {
            List<String> Db_list = new ArrayList<String>();
            try {
                String ConnectionString = "jdbc:jtds:sqlserver://" + Host + ":"
                        + Port;
                // Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
                Connection conn = DriverManager.getConnection(ConnectionString,
                        db_userid, db_password);
                System.out.println("connected");
                Statement statement = conn.createStatement();
                String queryString = "select name from sys.databases";
                ResultSet rs = statement.executeQuery(queryString);
                while (rs.next()) {
                    Db_list.add(rs.getString(1));
                }
            } catch (Exception e) {
                Db_list.add("Error");
                e.printStackTrace();
            }
            return Db_list;
        }
 类似资料:
  • 问题内容: 我正在尝试使用android应用中的JDBC连接到SQL Server。我将sqljdbc4.jar导入到我的应用程序中,但是当我进入 conn = DriverManager.getConnection(connString); 我得到以下错误:连接字符串是 jdbc:sqlserver://xxx.xxx.xxx.xxx:1433; encrypt = fasle; user =

  • 我想从Linux实例使用TLS1.2连接到我的数据库实例,但我无法这样做。我使用以下配置: < Li > Java JDK:Amazon corretto open JDK版本:" 1.8.0_252" < li>JDBC驱动程序:Microsoft SQL server MSSQL-JDBC:8 . 2 . 2 . JRE 8 < li >连接字符串:JDBC:SQL server://[我的数

  • 问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O

  • 本文向大家介绍Java使用JDBC驱动连接MySQL数据库,包括了Java使用JDBC驱动连接MySQL数据库的使用技巧和注意事项,需要的朋友参考一下 Java使用JDBC驱动连接MySQL数据库的步骤: 1.下载驱动,导入jar包 2.加载驱动 3.设置连接 连接成功后就是一些对数据库中数据的操作 1.下载驱动,导入jar包 当你看到jdbc目录下有相应的jar包说明第一步操作已经完成。 2.加

  • 问题内容: 我已经尝试了几乎所有可以找到的一切,如果有人能够帮助我,我将永远感激不已(在我的时间里,我有更多的空闲时间)。 基本上,我在Tomcat 7.0中有一个错误(都是在Eclipse中运行并通过startup.bat运行时),该错误表示一旦动态Web应用程序开始访问数据,就会出现此错误: 我的tomcat \ lib目录中有sqljdbc4.jar文件。我也尝试过将它放在我的WEB-INF