Подключение Android-приложения к Microsoft SQL Server 2008

Прежде всего. Я новичок в среде разработки приложений для Android и пытаюсь подключиться к mssqlserver 2008 с помощью простого приложения для Android с использованием драйвера jtds-1.3.1.jar. Я искал много примеров в Интернете, но мне не удалось подключиться к базе данных.
Я получаю исключение: Ошибка сети IOException: время ожидания соединения истекло
Я не знаю, что не так с моим кодом, я использую 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());
    }
    }
}

person Saveen    schedule 26.09.2014    source источник
comment
Подключить БД напрямую из приложения? Уверены ли вы ? Проверьте, открыт ли сетевой порт (но все же не рекомендуется это делать из соображений безопасности)   -  person Raptor    schedule 26.09.2014
comment
да мой сетевой порт открыт!   -  person Saveen    schedule 26.09.2014
comment
@Raptor Каковы проблемы с безопасностью и что бы вы порекомендовали? У меня есть сайт asp.net, который взаимодействует с SQL-сервером (но это естественно для них двоих), и там конфиденциальные данные находятся в конфигурации, очевидно, что наличие pw и un в коде, подобном приведенному выше, будет ниже номинала. навыки торможения в ... Что посоветуете делать ?   -  person Иво Недев    schedule 05.03.2015
comment
Никогда не подключайтесь к БД напрямую из Интернета, если только соединение не защищено (например, с помощью VPN). Если порт открыт, ваша БД, вероятно, уязвима для атак. Всегда используйте скрипт для обработки запроса и получения данных из БД!   -  person Raptor    schedule 06.03.2015


Ответы (2)


добавьте этот код

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
person kgmganesh    schedule 19.12.2014

Попробуй это

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 с использованием драйвера JDBC с Android

person Prasanth S    schedule 26.09.2014
comment
Спасибо за быстрый повтор, но по-прежнему возникает та же ошибка Ошибка сети IOException: время ожидания соединения истекло - person Saveen; 26.09.2014
comment
нет, я обращаюсь к живому серверу, я пробовал много примеров, найденных в Google, но каждый раз не мог подключиться. @PandiyanMuthu - person Saveen; 27.09.2014