将android应用程序连接到sql server数据库

时间:2014-03-07 23:33:03

标签: android sql-server

我是java和android的新手,我正在尝试将Android应用程序连接到SQL Server数据库

我正在使用此代码:

package com.example.sqlconnection;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import android.annotation.SuppressLint;

import android.app.Activity;

import android.os.Bundle;

import android.os.StrictMode;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.SimpleAdapter;


public class MainActivity extends Activity {


Button exec;
EditText textbox;
ListView list;
Connection connect;
SimpleAdapter AD;


private void declarer(){
    exec=(Button) findViewById(R.id.btn);
    textbox=(EditText) findViewById(R.id.textbox);
    list=(ListView) findViewById(R.id.list);
}


private void initialiser(){
    declarer();
    textbox.setText("SELECT * FROM TEST");      
    connect = CONN("sa", "123456", "android", "192.168.1.1:1433");
}

@SuppressLint("NewApi")
private Connection CONN(String _user, String _pass, String _DB , String _server){
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    Connection conn=null;
    String ConnURL=null;
    try {

        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        ConnURL="jdbc:jtds:sqlserver://"+_server+"/"+"databaseName="+_DB+";user="+_user+";password="+_pass+";";
        conn=DriverManager.getConnection(ConnURL);


    } catch (SQLException se) {
        // TODO: handle exception
        Log.e("ERROE",se.getMessage());
    }catch (ClassNotFoundException e) {
        // TODO: handle exception
        Log.e("ERROE",e.getMessage());
    }catch (Exception e) {
        // TODO: handle exception
        Log.e("ERROE",e.getMessage());
    }


    return conn ;
}


public void QuerySQL(String COMMANDSQL){
    ResultSet rs ;
    try {

        Statement statement=connect.createStatement();
        rs=statement.executeQuery(COMMANDSQL);

        List<Map<String,String>> data=null;
        data=new ArrayList<Map<String,String>>();
        while(rs.next()){
            Map<String,String> datanum=new HashMap<String,String>();
            datanum.put("A", rs.getString("NAME"));
            datanum.put("B", rs.getString("CITY"));
            data.add(datanum);
        }
        String[] from={"A","B"};
        int[] views={R.id.txt_2,R.id.txt_1};
        AD=new SimpleAdapter(this, data, R.layout.modele, from, views);
        list.setAdapter(AD);
    } catch (Exception e) {
        // TODO: handle exception
        Log.e("ERROR",e.getMessage());
    }
}




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

    initialiser();
    exec.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            QuerySQL(textbox.getText().toString());

        }
    } );
}


}

我还添加了自动曝光:

<uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

但在运行时我有这个错误:

Network error IOException : failed to connect to/192.168.1.1(port 1433): connect failed: ETIMEDOUT Connection timed out)

1 个答案:

答案 0 :(得分:0)

不要通过港口名称......我认为直到工作

使用

connect = CONN("sa", "123456", "android", "192.168.1.1");

而不是

connect = CONN("sa", "123456", "android", "192.168.1.1:1433");
相关问题