如何将sql server连接到android应用程序?

如何将sql server连接到android应用程序?,android,sql-server,connection,Android,Sql Server,Connection,我向库中添加了一个jtds1.2.7-jar文件 代码在运行时出现以下错误: 错误:未知的服务器主机名“Asus PC” 如果有人知道什么,请帮帮我 提前感谢。将计算机名“Asus-PC”替换为ip地址 您是否在emulator中运行?请尝试此10.0.2.2 这不是有效的代码,请使用web服务访问数据库 永远不要直接从应用程序连接到数据库。黑客可以很容易地掌握你的所有数据库,窃取你的所有数据,并将数据库清除干净 您应该使用web服务。你的应用程序应该只与服务通信,而不是直接与数据库通信 不要盲

我向库中添加了一个jtds1.2.7-jar文件

代码在运行时出现以下错误:

错误:未知的服务器主机名“Asus PC”

如果有人知道什么,请帮帮我

提前感谢。

将计算机名“Asus-PC”替换为ip地址

您是否在emulator中运行?请尝试此10.0.2.2

这不是有效的代码,请使用web服务访问数据库

永远不要直接从应用程序连接到数据库。黑客可以很容易地掌握你的所有数据库,窃取你的所有数据,并将数据库清除干净

您应该使用web服务。你的应用程序应该只与服务通信,而不是直接与数据库通信

不要盲目地遵循任何教程,这是一个非常大的安全问题。

经过两天的努力。。最后,我可以通过MS SQL数据库连接我的android应用程序。。 看一看,也许对你也有帮助

一,

你要做的第一件事就是转到链接并下载驱动程序,通过ms sql连接应用程序。 下载jtds-1.3.1-dist.zip 551.2kb的zip文件并解压缩以找到其中的jar文件夹jtds-1.3.1.jar

二,

下一步是打开android studio并创建一个新项目。空白活动。 现在打开根explorerlat+1 从左上角显示android的选项卡中,从下拉列表中选择项目模块。 您可以在顶部看到项目的名称。右键单击此项并添加新目录。将上面从dist文件夹解压缩的jar文件粘贴到该文件夹。 现在将jar文件作为模块添加到项目中。在项目目录上单击鼠标右键,然后单击“添加模块”选项。 浏览在上述步骤中添加jar文件的文件夹名称,并允许gradle正确同步。 现在是将这个库作为依赖项添加到android studio项目的时候了。 为此,再次右键单击“项目名称”选项卡,并移动到“打开模块配置”几乎是最后一个选项。 它会打开一个显示项目的窗口。移动到应用程序目录左侧的最后一个选项卡,然后单击+图标 添加依赖项 作为一个模块 单击它将显示您刚刚创建的模块。现在加上这个。 它将自动编译并在gradle文件中添加依赖项

三,

你现在差不多完成了。 只需将代码复制为您的主要活动


}.

我已经这样做了,但效率很低。 正如其他评论所提到的,您不应该在设备上保存DB凭据,而是使用Web服务

要想让它发挥作用,你需要做两件事,首先

package com.example.administrator.testsqlserver;

 import android.os.Bundle;
 import android.os.StrictMode;
 import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.Snackbar;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.util.Log;
 import android.view.View;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.widget.EditText;
 import android.widget.Toast;

 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import net.sourceforge.jtds.jdbc.*;

 public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new   StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }}



public void Connect(View v)
{
    EditText editText=(EditText)findViewById(R.id.editText);
    String code = editText.getText().toString();
    Log.i("Android"," MySQL Connect Example.");
    Connection conn = null;
    try {
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        Class.forName(driver).newInstance();
  //test = com.microsoft.sqlserver.jdbc.SQLServerDriver.class;
        String connString = "jdbc:jtds:sqlserver://yourip :1433/your      db;encrypt=fasle;user=username;password=password;";
        String username = "your username";
        String password = "your password";
        conn = DriverManager.getConnection(connString,username,password);
        Log.w("Connection","open");
        Statement stmt = conn.createStatement();
        Toast.makeText(MainActivity.this, "This works", Toast.LENGTH_SHORT).show();
        ResultSet reset = stmt.executeQuery("SELECT NAME FROM tablename ;");

        while(reset.next()){

           String ans= reset.getString(1);
            Toast.makeText(MainActivity.this,ans,      Toast.LENGTH_SHORT).show();

        }

        conn.close();

    } catch (Exception e)
    {
        Log.w("Error connection","" + e.getMessage());
        e.printStackTrace();
    }
}
如果您在同一网络上,您还必须将输入的PC名称更改为LAN IP;如果您通过internet连接,则必须更改公共IP地址

此外,如果您与服务器不在同一网络上,则还必须在连接到服务器的路由器上启用端口转发


警告:在SQL Server上启动数据库引擎之前,该端口将始终显示为关闭状态,该引擎的名称为拥有该数据库的计算机的IP地址。

如果可能,它允许我下载链接或Web服务的源代码
package com.example.administrator.testsqlserver;

 import android.os.Bundle;
 import android.os.StrictMode;
 import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.Snackbar;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.util.Log;
 import android.view.View;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.widget.EditText;
 import android.widget.Toast;

 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import net.sourceforge.jtds.jdbc.*;

 public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new   StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }}



public void Connect(View v)
{
    EditText editText=(EditText)findViewById(R.id.editText);
    String code = editText.getText().toString();
    Log.i("Android"," MySQL Connect Example.");
    Connection conn = null;
    try {
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        Class.forName(driver).newInstance();
  //test = com.microsoft.sqlserver.jdbc.SQLServerDriver.class;
        String connString = "jdbc:jtds:sqlserver://yourip :1433/your      db;encrypt=fasle;user=username;password=password;";
        String username = "your username";
        String password = "your password";
        conn = DriverManager.getConnection(connString,username,password);
        Log.w("Connection","open");
        Statement stmt = conn.createStatement();
        Toast.makeText(MainActivity.this, "This works", Toast.LENGTH_SHORT).show();
        ResultSet reset = stmt.executeQuery("SELECT NAME FROM tablename ;");

        while(reset.next()){

           String ans= reset.getString(1);
            Toast.makeText(MainActivity.this,ans,      Toast.LENGTH_SHORT).show();

        }

        conn.close();

    } catch (Exception e)
    {
        Log.w("Error connection","" + e.getMessage());
        e.printStackTrace();
    }
}
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy);