【问题标题】:Connecting android app to Microsoft SQL server 2008将 android 应用程序连接到 Microsoft SQL Server 2008
【发布时间】:2014-09-26 05:52:35
【问题描述】:

首先。我是 android 应用程序开发环境的新手,我正在尝试使用 jtds-1.3.1.jar 驱动程序通过简单的 android 应用程序连接到 mssqlserver 2008。我在互联网上搜索了很多示例,但我无法连接数据库。
我得到的异常是 Network error IOException: connection time out
我不知道我使用 Eclipse juno IDE 的代码有什么问题。
这是我的代码

package com.example.Testproject1;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import android.widget.TextView;
import java.sql.*;


public class MainActivity extends ActionBarActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        connectTodatabase();
    }


    public void connectTodatabase()
    {
        TextView txtView=(TextView)findViewById(R.id.textView2);
        String url = "jdbc:jtds:sqlserver://XXX.XXX.X.XXX:1433;DatabaseName=VautomateuShoppi";
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        String userName = "VShopping_User";
        String password = "VShopping_Pass";   
        // Declare the JDBC objects.
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
    try
    {

        // Establish the connection.
        Class.forName(driver);
        con = DriverManager.getConnection(url, userName, password);
            // Create and execute an SQL statement that returns some data.
            String SQL = "select * from SeoMaster";
            stmt = con.createStatement();
            rs = stmt.executeQuery(SQL);

            // Iterate through the data in the result set and display it.
            while (rs.next()) {
                txtView.setText(rs.getString(2));
            }
    }
    catch(Exception ex)
    {
        txtView.setText(ex.getMessage().toString());
    }
    }
}

【问题讨论】:

  • 直接从 App 连接数据库?你确定吗 ?检查网络端口是否打开(但仍然不建议这样做,出于安全问题)
  • 是的,我的网口打开了!
  • @Raptor 有哪些安全问题,您有什么建议?我有一个与 SQL 服务器对话的 asp.net 站点(但这对他们两个来说有点自然),在那里,敏感数据在配置中,显然在上面这样的代码中有 pw 和 un 会低于标准刹车的技巧......你会建议做什么?
  • 永远不要直接从 Internet 连接 DB,除非连接是安全的(例如通过 VPN)。如果端口打开,您的数据库可能容易受到攻击。始终使用脚本处理请求并从数据库中获取数据!

标签: java android sql-server eclipse jtds


【解决方案1】:

添加这些代码

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

【讨论】:

    【解决方案2】:

    试试这个

    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;
            }
    

    参考Sql Database connect Using the JDBC Driver with android

    【讨论】:

    • 感谢您的快速重播,但仍然收到相同的错误网络错误 IOException:连接超时
    • 不,我正在访问实时服务器,我尝试了许多在谷歌上找到的示例,但每次都无法连接。 @PandiyanMuthu
    猜你喜欢
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多