AndroidStudio通過JTDS遠程訪問SQLServer數據庫


引用http://blog.sina.com.cn/s/blog_45eaa01a0102y8ug.html

 

一、下載SQL驅動JTDS
 
下載 jtds-1.3.1-dist.zip
 
2 在Android Studio中導入Library項目
 在開發環境菜單 
  File -- New -- Import Project...
 從中找到下載的加入
 
3 把Library項目添加到源項目中
 
這部不做,調用以下語句 Class.forName("net.sourceforge.jtds.jdbc.Driver");
會出現 ClassNotFound:net.sourceforge.jtds.jdbc.Driver 錯誤
 
 在開發環境,從菜單 File -- Project Structure,點擊進入
 在窗口左側選擇自己的項目后,點擊右側的Dependencies。
 點擊右側的“+”添加按鈕,在下拉菜單中找到Module Dependency,點擊打開項目選擇窗口。
 選擇前面步驟中導入的Library項目后,點擊OK按鈕導入到自己項目中
  AndroidStudio通過JTDS遠程訪問SQLServer數據庫
 
二、開發環境
 
windows 7 X64
android 5.1
android studio 3.1.2
Microsoft SQL Server 2008 R2
 
1 SQL ERVER  允許遠程訪問 
開始--SQL2008--配置工具--SQL Server配置管理器--SQL Server網絡配置--SQLexpress的協議--TCP/IP
狀態 要改為   已啟用
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫


 
2  建立數據庫和表
數據庫 BOOK  
建立表 管理員,字段 編號,姓名,密碼,內容如下:
編號    姓名 密碼
1001    穆木 1212
1002   久九 123
1003    巴芭 111
1004    admin 111
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫

 
 
 
三、用JTDS連接SQLServer數據庫相關代碼
 
1 Android 訪問sql server的類
 
package com.example.wmx.myapplication6;
//package com.example.androidsql;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
 
public class DBUtil
{
 
    private static Connection getSQLConnection(String ip, String user, String pwd, String db)
    {
        Connection con = null;
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ip + ":1433/" + db, user, pwd);
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
        return con;
    }
 
    public static String QuerySQL()
    {
        String result = "";
        try
        {
            Connection conn = getSQLConnection("10.3.1.37", "sa", "123", "book");
            String sql = "select top 10 * from 管理員";
            Statement stmt = conn.createStatement();//
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next())
            {
                String s1 = rs.getString("姓名");
                String s2 = rs.getString("密碼");
                result += s1 + "  -  " + s2 + "\n";
                System.out.println(s1 + "  -  " + s2);
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e)
        {
            e.printStackTrace();
            result += "異常!" + e.getMessage();
        }
        return result;
    }
 
    public static void main(String[] args)
    {
        QuerySQL();
    }
}
 
 
 
2 MainActivity.java
 
package com.example.wmx.myapplication6;
 
//package com.example.androidsql;
 
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends Activity
{
    private View btnTest;
    private View btnClean;
    private TextView tvTestResult;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnTest=findViewById(R.id.btnTestSql);
        btnClean=findViewById(R.id.btnClean);
        tvTestResult = (TextView)findViewById(R.id.tvTestResult);
 
        btnTest.setOnClickListener(getClickEvent());
        btnClean.setOnClickListener(getClickEvent());
    }
 
    private View.OnClickListener getClickEvent(){
        return new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                tvTestResult.setText("...");
                if(v==btnTest){
                    test();
 
                }
            }
        };
    }
    private void test()
    {
        Runnable run = new Runnable()
        {
            @Override
           public void run()
            {
    //測試數據庫的語句,在子線程操作,在主線程好像不成功。
                String ret = DBUtil.QuerySQL();
                Message msg = new Message();
                msg.what=1001;
                Bundle data = new Bundle();
                data.putString("result", ret);
                msg.setData(data);
                mHandler.sendMessage(msg);
            }
        };
        new Thread(run).start();
 
    }
 
    Handler mHandler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            switch (msg.what)
            {
                case 1001:
                    String str = msg.getData().getString("result");
                    tvTestResult.setText(str);
                    break;
 
                default:
                    break;
            }
        };
    };
 
}
 
以下 XML文件中都有大量的 左尖括號<,測試發現博客中的  < 需要和它后面的內容之間空一格才行,這樣做太麻煩了,為了簡單拍成圖片
3 activity_main.xml
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫
 
 
4 content_main.xml
 

AndroidStudio通過JTDS遠程訪問SQLServer數據庫


5  strings.xml
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫
 
 
6  AndroidManifest.xml
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫
 
注意:有關網絡訪問需要如下的許可,
 
    < uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    < uses-permission android:name="android.permission.INTERNET" />
    < uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
四  執行程序 
 
1  從模擬上
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫
 
 
 
2  從真實的手機上

AndroidStudio通過JTDS遠程訪問SQLServer數據庫

 
 
 
五  IP地址的獲得
 
SQL SERVER 數據庫位於PC機上, 手機和PC機位於同一個局域網內
 
1 獲得 PC機IP地址10.3.1.37
 
從命令行執行 ipconfig 獲得Windows IP 配置如下:
 
 
無線局域網適配器 無線網絡連接:
 
   連接特定的 DNS 后綴 . . . . . . . :
   本地鏈接 IPv6 地址. . . . . . . . : fe80::59cb:ec67:d8a1:77d3
   IPv4 地址 . . . . . . . . . . . . : 192.168.123.1
   子網掩碼  . . . . . . . . . . . . : 255.255.255.0
   默認網關. . . . . . . . . . . . . :
 
以太網適配器 本地連接:
 
   連接特定的 DNS 后綴 . . . . . . . :
   本地鏈接 IPv6 地址. . . . . . . . : fe80::50fb:a1b7:500e:82ef
    IPv4 地址 . . . . . . . . . . . . : 10.3.1.37
   子網掩碼  . . . . . . . . . . . . : 255.255.0.0
   默認網關. . . . . . . . . . . . . : 10.3.0.1
 
 
2 獲得手機的IP地址 10.0.2.10
這一步不需要,只是將來需要靜態設置時需要
 
從手機上, 設置--關於手機-- 狀態信息
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫
 
 
六 以下幾個文件夾的內容可能在工作中出現問題,需要刪除重新建立
 
C:\Users\wmx\AppData\Local\Android\Sdk
C:\Users\wmx\.android\avd\Nexus_5X_API_22.avd
C:\Users\wmx\.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpiv8o6njlyu5op1
 
AndroidStudio通過JTDS遠程訪問SQLServer數據庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM