91丨国产丨白浆秘 喷水,国产熟妇毛多 A片欧美蜜臀,北京熟妇搡BBBB搡BBBB,国产精品人人做人人爽人人添

  您的位置: 【卓安特保-您身邊的護(hù)衛(wèi)專家】山東卓安安防工程有限公司,電話13361029977 >> 安防資訊 >> 卓安安防 >> Android編程
 閱讀文章

android端直接鏈接服務(wù)端sqlserver數(shù)據(jù)庫

  文章作者:網(wǎng)絡(luò)來源:網(wǎng)絡(luò)轉(zhuǎn)摘瀏覽次數(shù):6520字體:字體顏色
 閱讀權(quán)限:游客身份花費(fèi)會(huì)員幣:0添加時(shí)間:2020/3/20 9:24:19提交會(huì)員:佚名

1、開發(fā)中遇到需要android端直接鏈接服務(wù)端sqlserver數(shù)據(jù)庫,并向sqlserver數(shù)據(jù)庫插入數(shù)據(jù)的場(chǎng)景。
2、鏈接到sqlserver數(shù)據(jù)庫,需要用到 jtds 工具包,我使用的是 jtds-1.3.1.jar。點(diǎn)擊百度網(wǎng)盤下載,密碼: fma7
3、下面就是直接鏈接sqlserver數(shù)據(jù)庫的代碼:
package com.mtjsoft.www.myapplication.data;

import android.util.Log;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author mtj 2018-4-9 10:00:48
 *         Created by Administrator on 2018/4/9.
 *         android 鏈接sqlserver數(shù)據(jù)庫
 */

public class MtjServerDatabaseTools {
    private static String user = "數(shù)據(jù)庫用戶名";
    private static String password = "數(shù)據(jù)庫密碼";
    private static String DatabaseName = "數(shù)據(jù)庫名稱";
    private static String IP = "數(shù)據(jù)庫所在的IP地址";
    /**
     * 連接字符串
     */
    private static String connectDB = "jdbc:jtds:sqlserver://" + IP + ":1433/" + DatabaseName + ";useunicode=true;characterEncoding=UTF-8";

    private static Connection conn = null;
    private static Statement stmt = null;

    /**
     * 鏈接數(shù)據(jù)庫
     *
     * @return
     */
    private static Connection getSQLConnection() {
        Connection con = null;
        try {
            //加載驅(qū)動(dòng)換成這個(gè)
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            //連接數(shù)據(jù)庫對(duì)象
            con = DriverManager.getConnection(connectDB, user,
                    password);
        } catch (Exception e) {
        }
        return con;
    }

    /**
     * 向服務(wù)器數(shù)據(jù)庫插入數(shù)據(jù)
     * @tabName 要插入的表名
     * @tabTopName 要插入的字段名字符串,例如(name,password,age)
     * @values 與tabTopName 中 字段名一一對(duì)應(yīng)的值。一次插入多跳數(shù)據(jù),可以用逗號(hào)隔開。例如("張三","zhangsan","24"),("李四","lisi","26")
     */
    public static int insertIntoData(String tabName, String tabTopName, String values) {
        int i = 0;
        try {
            if (conn == null) {
                conn = getSQLConnection();
                stmt = conn.createStatement();
            }
            if (conn == null || stmt == null) {
                return i;
            }
            String sql = "insert into " + tabName + tabTopName + " values " + values;
            i = stmt.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
            Log.i("mtj", "同步數(shù)據(jù)庫表【" + tabName + "】失敗。");
        }
        return i;
    }

    /**
     * 向服務(wù)器數(shù)據(jù)庫插入數(shù)據(jù)---并返回插入的主鍵id。
     * 注意,此方法只能返回最新插入的一條數(shù)據(jù)的id。所以一次插入多跳數(shù)據(jù)時(shí),只返回最后一個(gè)id。
     */
    public static int insertIntoDataReturnId(String tabName, String tabTopName, String values, CallBackImp callBackImp) {
        int id = 0;
        try {
            if (conn == null) {
                conn = getSQLConnection();
                stmt = conn.createStatement();
            }
            if (conn == null || stmt == null) {
                return id;
            }
            String sql = "insert into " + tabName + tabTopName + " values " + values;
            int i = stmt.executeUpdate(sql);
            if (i > 0) {
                ResultSet resultSet = stmt.executeQuery("select SCOPE_IDENTITY() as id;");
                while (resultSet.next()) {
                    id = resultSet.getInt(1);
                }
            } else {
                Log.i("mtj", "同步數(shù)據(jù)庫表【" + tabName + "】---->失敗。");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            Log.i("mtj", "同步數(shù)據(jù)庫表【" + tabName + "】---->失敗。");
        }
        return id;
    }

    /**
     * 關(guān)閉數(shù)據(jù)庫鏈接
     */
    public static void closeConnect() {
        if (stmt != null) {
            try {
                stmt.close();
                stmt = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
                conn = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
android端連接sqlserver數(shù)據(jù)庫的方法就完成了,是不是很簡(jiǎn)單。
4、我們模仿一個(gè)場(chǎng)景演示一下。從本地?cái)?shù)據(jù)庫user表中取出所有數(shù)據(jù),插入到sqlserver數(shù)據(jù)中。
從本地取出所有的user數(shù)據(jù)。轉(zhuǎn)換成上面 insertIntoData()方法中所需要傳入的字符串。
假設(shè)本地user表和sqlserver中的user表的字段都是一致的。
            SQLiteDatabase database = 獲取一個(gè)可讀的就行,這里就不說;
            //數(shù)據(jù)庫表的所有字段名稱
            StringBuilder tabTopName = new StringBuilder();
            //存放數(shù)據(jù)庫表的數(shù)據(jù)
            StringBuilder values = new StringBuilder();
            //按照表名user,查詢出所有數(shù)據(jù)
            Cursor cursor = database.query("user", null, "",
                    null, null, null, null);
            if (cursor != null && cursor.getCount() > 0) {
                int column = cursor.getColumnCount();
                //拼接所有字段名,例如 (name,password,age)
                tabTopName.append("(");
                for (int k = 0; k < column; k++) {
                    String s = cursor.getColumnName(k);
                    //過濾掉本地?cái)?shù)據(jù)庫的id;因?yàn)閟qlserver有自增的id
                    if (!"id".equals(s)) {
                        tabTopName.append(s);
                        if (k != column - 1) {
                            tabTopName.append(",");
                        } else {
                            tabTopName.append(")");
                        }
                    }
                }
                //拼接所有數(shù)據(jù)
                //例如("張三","zhangsan","24"),("李四","lisi","26")
                while (cursor.moveToNext()) {
                    values.append("(");
                    for (int k = 0; k < column; k++) {
                        String s = cursor.getColumnName(k);
                        //過濾掉本地?cái)?shù)據(jù)庫的id;因?yàn)閟qlserver有自增的id
                        if (!"id".equals(s)) {
                            String strValue = cursor.getString(k);
                            values.append("'");
                            values.append(strValue);
                            values.append("'");
                            if (k != column - 1) {
                                values.append(",");
                            } else {
                                values.append(")");
                            }
                        }
                    }
                    values.append(",");
                }
                values.deleteCharAt(values.length() - 1);
                cursor.close();
                database.close();
                //組合成sql語句的格式。向服務(wù)器數(shù)據(jù)庫插入數(shù)據(jù)。
                int count = MtjServerDatabaseTools.insertIntoData("user", tabTopName.toString(), values.toString());
                if (count > 0) {
                    //同步數(shù)據(jù)庫表成功
                } else {
                    //同步數(shù)據(jù)庫表失敗
                }
            }
OK。從android本地?cái)?shù)據(jù)讀取數(shù)據(jù),并向服務(wù)器sqlserver數(shù)據(jù)庫插入數(shù)據(jù)的場(chǎng)景就完成了,是不是非常的簡(jiǎn)單呢。有空的話,可以自己試一試吧。歡迎批評(píng)指正!
————————————————
版權(quán)聲明:本文為CSDN博主「帥氣的鉛筆」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_28779083/article/details/79986357

·上篇文章:SQL Server 2012 數(shù)據(jù)庫鏡像配置
·下篇文章:影響網(wǎng)絡(luò)質(zhì)量的幾種原因
復(fù)制 】 【 打印
 相關(guān)文章
沒有相關(guān)文章
特別聲明:本站除部分特別聲明禁止轉(zhuǎn)載的專稿外的其他文章可以自由轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處和原始作者。文章版權(quán)歸文章原始作者所有。對(duì)于被本站轉(zhuǎn)載文章的個(gè)人和網(wǎng)站,我們表示深深的謝意。如果本站轉(zhuǎn)載的文章有版權(quán)問題請(qǐng)聯(lián)系我們,我們盡快予以更正,謝謝。
關(guān)于我們 | 業(yè)務(wù)范圍 | 免責(zé)聲明 | 聯(lián)系我們 | 友情連接
版權(quán)所有 Copyright © 2007 【卓安特保-您身邊的護(hù)衛(wèi)專家】山東卓安安防工程有限公司,電話13361029977 All Rights Reserved.
魯ICP備11024361號(hào)-5    頁面執(zhí)行時(shí)間:31.25MS
蜜桃精品a v久久久久久 | 国产色情a v久久一区二区 | 国产免费一区二区三区免费视频 | 色欲AV一区二区三区 | 美女裸体久久ww18 | 中文字幕免费播放 | 少妇性猛交ⅩXXX乱大交 | 日本在线免费视频 | 亚洲国产毛片AAAAA无费看 | 国精品无码区在线蜜桃 | 91精品久久久久久久久久久久久蜜桃 | 成人免费看一级A片奶水多 特级毛片AAAAAA蜜桃 | 6080午夜福利| 国内媚黑人妻BBC | 成人黄网站18秘 免费看 | 精品久久久久成人无码免费动漫 | A片女女女女女女BBBB | 人人操人人干人人摸 | 91精品人妻人人做人碰人人爽 | 一本大道无码中文字幕蜜桃英文 | 国产在线中文字幕 | 亚洲AV无码羞羞答答在线观看 | 中文字幕一区二区无码一区 | 成人黃色A片免费看三更小说 | 搡老女人老妇人一级A片 | 欧美人与性囗牲恔配 | 一区二区三区四区在线播放 | 91大战人妻少妇 | 亚洲精品久久久一二区三区蜜桃av | 汤芳www久久久久久女人18 | 污黄网站在线观看 | 国产精品成人在线观看 | 久久久精品人妻一区二区蜜桃 | 日本人妻伦中文字幕一三区蜜桃 | 99在线免费视频 | 亚洲综合成人一区二区三区 | 丰满老阿姨一级AA片色欲 | 国产成人影院 mp4 | 人人妻人人爽人人做夜欢 | 精品人妻一区二区三区四区久久 | 嫩BBB槡BBB槡BBBB|