• 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 + " ";
                    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:UserswmxAppDataLocalAndroidSdk
    C:Userswmx.androidavdNexus_5X_API_22.avd
    C:Userswmx.gradlewrapperdistsgradle-4.4-all9br9xq1tocpiv8o6njlyu5op1
     
    AndroidStudio通过JTDS远程访问SQLServer数据库
  • 相关阅读:
    微信小程序wx.request请求用POST后台得不到传递数据
    小程序的movable-view怎么持续移动
    当inline-block或者float失效的时候怎么弄
    js中如何删除json对象的某一个选项
    情非得已
    框架变量的问题
    隐式等待写法__和显示等待对比问题___及误区
    显式等待大结局___封装成API方便控制层调用
    显式等待第二集____灵活写法__
    显式等待__第一集___追加了误区
  • 原文地址:https://www.cnblogs.com/jarekpierre/p/10913450.html
Copyright © 2020-2023  润新知