Android で SqlServer 2008r2 データベースに接続しようとしています。
接続文字列が正しく形成されていないようです。
次のエラーが発生しています:
com.microsoft.sqlserver.jdbc.SQLServerException: インスタンス 14graficali\mssqlserver20081433 という名前のホスト 10.0.2.2 への接続に失敗しました。エラー: 「java.net.SocketException: 許可が拒否されました」。サーバーとインスタンスの名前を確認し、ファイアウォールがポート 1434 への UDP トラフィックをブロックしていないことを確認します。SQL Server 2005 以降の場合、SQL Server Browser Service がホストで実行されていることを確認します。
私のSqlインスタンス:
私が形成した接続文字列:
String dbName = "AndroidDB";
String serverip="10.0.2.2";
String serverport="1433";
String url = "jdbc:sqlserver://"+serverip+"\\14GRAFICALI\\MSSQLSERVER2008"+serverport+";databaseName="+dbName+"";
私がそれを実装しているコード全体:
public class MainActivity extends Activity {
String dbName = "AndroidDB";
String serverip="10.0.2.2";
String serverport="1433";
String url = "jdbc:sqlserver://"+serverip+"\\14GRAFICALI\\MSSQLSERVER2008"+serverport+";databaseName="+dbName+"";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvData=(TextView)findViewById(R.id.tvSelectedData);
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn =DriverManager.getConnection(url);
Statement statement=conn.createStatement();
ResultSet resultSet=statement.executeQuery("select * from UserMaster");
while(resultSet.next()){
tvData.setText(" Data1 : "+resultSet.getString(1)+" Data 2 : "+resultSet.getNString(2));
}
} catch (Exception e) {
e.printStackTrace();
tvData.setText(e.getMessage());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}