【问题标题】:How to connect sql server to android application?如何将sql server连接到android应用程序?
【发布时间】:2014-10-09 20:19:54
【问题描述】:
public class MainActivity extends Activity {

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

        Button btn=(Button)findViewById(R.id.button1);

        btn.setOnClickListener(new OnClickListener() {

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

    }

    public void connection(){
        try {

            Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

            Connection conn=DriverManager.getConnection("jdbc:jtds:sqlserver://Asus-PC/PJH.V1;","","");
            Log.w("Connection", "Error");

            Statement stat=conn.createStatement();          
            ResultSet result=stat.executeQuery("SELECT * FROM Javher1");

            TextView tv=(TextView)findViewById(R.id.textView1);
            tv.setText(result.getString(1));
            conn.close();

        } catch (Exception e) {
            // TODO: handle exception
            Log.e("Error",e.getMessage());
            Toast.makeText(getApplicationContext(), "Error"+e.getMessage(), Toast.LENGTH_LONG).show();
        }

    }
}

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

代码运行我得到以下错误:

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

如果有人知道,请帮助我!

提前致谢。

【问题讨论】:

    标签: android sql-server connection


    【解决方案1】:

    从不、everever直接从应用程序直接连接到数据库。黑客可以轻松掌握您的所有数据库,窃取您的所有数据并清除数据库...!

    您应该使用网络服务。您的应用应该只与服务通信,而不是直接与数据库通信...

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

    【讨论】:

    • 如果可能的话,它可以让我下载链接或Web服务的源代码
    【解决方案2】:

    经过 2 天的奋斗.. 终于我可以通过 MS SQL 数据库连接我的安卓应用了..

    看看它可能对你也有帮助。

    1


    您要做的第一件事是转到链接https://sourceforge.net/projects/jtds/并下载驱动程序以通过ms sql连接应用程序。 下载jtds-1.3.1-dist.zip (551.2 kB) zip文件,解压后找到里面的jar文件夹(jtds-1.3.1.jar)。


    2


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


    3


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

    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();
        }
    }
    

    }。

    【讨论】:

      【解决方案3】:

      计算机名称('Asus-PC')替换为ip-address

      你是否在模拟器中运行试试这个10.0.2.2

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

      http://sochinda.wordpress.com/2011/05/27/connecting-to-net-web-service-from-android/

      http://www.codeproject.com/Articles/304302/Calling-Asp-Net-Webservice-ASMX-From-an-Android-Ap

      【讨论】:

        【解决方案4】:

        我已经这样做了,但是效率很低。 正如其他 cmets 所提到的使用网络服务,您不应该将您的数据库凭据保存在您的设备上。

        为此,您需要做两件事,首先,

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        
            StrictMode.setThreadPolicy(policy);
        

        如果您在同一网络上,您还必须将输入的 PC 名称更改为 LAN IP;如果您通过 Internet 连接,则必须更改公共 IP 地址。

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

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

        【讨论】:

          【解决方案5】:

          将你的 android 应用程序连接到数据库的最佳方法是构建一个可以与数据库通信并回答你的请求的 rest api

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-01
          • 1970-01-01
          • 2013-03-23
          • 1970-01-01
          相关资源
          最近更新 更多