【问题标题】:Cannot Connect from Android to SQL Server Directly无法从 Android 直接连接到 SQL Server
【发布时间】:2014-08-13 09:29:00
【问题描述】:

我正在测试从 Android 直接连接到 SQL Server 的应用程序,但无法从 Android 直接连接到 SQL Server。浏览器服务正在运行,TCP端口已启用,仍然发出奇怪的错误。还包括互联网权限

有什么问题

import java.sql.*;
import android.os.*;
import android.util.*;
import android.app.*;
import net.sourceforge.jtds.jdbc.*;
import android.widget.*;
public class MainActivity extends Activity

{
TextView txt;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt=(TextView)findViewById(R.id.txt);
getData();
}
public void getData()
{
Log.i("Android"," MySQL Connect Example.");
Connection conn = null;
try
{
/*
String dbName = "DatabaseNew";
String driver = "net.sourceforge.jtds.jdbc.Driver";
String connString = "jdbc:jtds:sqlserver://KashifPC:1433/DatabaseNew;instance=MSSQLSERVER;user=gulzar;password=allah";
//String userName = "gulzar";
//String password = "allah";
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(connString,userName,password);
*/
String connString="jdbc:sqlserver://127.0.0.1:1433;databaseName=DatabaseNew;";
Class.forName("com.microsoft.sqlserver.jdbc.DriverJDBCVersion").newInstance();
conn = DriverManager.getConnection(connString,"gulzar","allah");
Log.w("Connection","open");
Statement stmt = conn.createStatement();
ResultSet reset = stmt.executeQuery("Select * from dbo.StuAndroid");
while(reset.next())
{
Log.w("Data:",reset.getString(1));
Log.w("Data:",reset.getString(2));
Log.w("Data:",reset.getString(3));
txt.setText(reset.getString(2)+"\n");
}
stmt.close();
conn.close();
} catch (Exception e)
{
Log.w("Error connection","Error :" + e.getMessage());
}

}
}

【问题讨论】:

  • 这不是与服务器通信的正确方式。您应该使用 rest-json 网络服务来使用移动设备上的数据。

标签: android mysql sql-server database


【解决方案1】:

127.0.0.1 是您的私有 IP 地址...您应该使用服务器的公共 IP 地址-

转到服务器主机并从here获取您的公共IP

【讨论】:

    【解决方案2】:

    用你的服务器的公共 IP 地址试试这个代码。

            String email_id = request.getParameter("EMAILID");
            String user_id = request.getParameter("USERID");
    
            //String searchQuery = "select * from [USER]";
            String searchQuery = "select [STATE],COUNTRY  from [USER] where EMAILID='"
                    + email_id + "' AND USERID ='" + user_id + "'";
    
            try {
                // Class.forName("com.mysql.jdbc.Driver");
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    
            } catch (ClassNotFoundException e) {
                System.out.println(e.getMessage());
            }
            try {
    
    
                Connection con = DriverManager
                        .getConnection(
                                "jdbc:sqlserver://your_public_ip; databaseName=TEST",
                                "user_name", "pwd");
    
    
                PreparedStatement stmt = con.prepareStatement(searchQuery);
    
                ResultSet rs = stmt.executeQuery();
    
    
                boolean isEmpty = rs.next();
                if (!isEmpty) {
                    // redirect to error page
                    /*System.out.println("Username Data is"
                            + rs.getString("USERNAME"));*/
                    response.sendRedirect("LoginFailure.jsp");
                } else if (isEmpty) {
                    // fetch the session from request, create new session if session
                    // is not present in the request
                    // System.out.println("Username Data is"+rs.getString("USERNAME"));
                    HttpSession session = request.getSession(true);
                    session.setAttribute("STATE", rs.getString("STATE"));
                    session.setAttribute("COUNTRY", rs.getString("COUNTRY"));
    
                    // redirect to success page
                    response.sendRedirect("LoginSuccess.jsp");
                }
            } catch (SQLException e) {
                System.out.println("SQLException occured: " + e.getMessage());
                e.printStackTrace();
            }
    

    希望对你有很大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-30
      • 2021-03-22
      • 2016-07-02
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      相关资源
      最近更新 更多