日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android 使用jtds远程访问数据库

發(fā)布時(shí)間:2023/12/9 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 使用jtds远程访问数据库 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近老師讓我用jtds這個(gè)jar包遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),雖然不難,但有幾個(gè)點(diǎn)還是要注意一下的。

1、jtds的jar包我使用的是1.2.7這個(gè)版本的,如果是Java工程使用的是1.3.1這個(gè)版本,Android工程不能使用1.3.1否則連接不上數(shù)據(jù)庫(kù)

2、遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器的防火墻要關(guān)閉

?

下面是如何使用jtds的案例

Javabean有兩個(gè)字段一個(gè)是id,一個(gè)是stuName

package com.ht.jdts;

public class StuDomain {
?? ?private String id;
?? ?private String stuName;
?? ?public String getId() {
?? ??? ?return id;
?? ?}
?? ?public void setId(String id) {
?? ??? ?this.id = id;
?? ?}
?? ?public String getStuName() {
?? ??? ?return stuName;
?? ?}
?? ?public void setStuName(String stuName) {
?? ??? ?this.stuName = stuName;
?? ?}
}

?

訪問(wèn)sqlserver的工具類

package com.example.jdtsproc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class SqlHelper {
?? ?private String drive = "net.sourceforge.jtds.jdbc.Driver";
?? ?private String connStr;
?? ?private String server;
?? ?private String dbName;
?? ?private String userName;
?? ?private String userPwd;
?? ?private Connection con;
?? ?private PreparedStatement pstm;
?? ?private ResultSet rs;
?? ?private Statement stmt;

?? ?public SqlHelper(String server, String dbName, String userName,
?? ??? ??? ?String userPwd) {
?? ??? ?this.server = server;
?? ??? ?this.dbName = dbName;//數(shù)據(jù)庫(kù)名
?? ??? ?this.connStr = "jdbc:jtds:sqlserver://" + this.server + ":1433/"
?? ??? ??? ??? ?+ this.dbName;

?? ??? ?this.userName = userName;
?? ??? ?this.userPwd = userPwd;

?? ?
?? ?}

?? ?public List<StuDomain> ExecuteQuery(String sql) {

?? ??? ?List<StuDomain> stuLists = new ArrayList<StuDomain>();
?? ??? ?
?? ??? ?try {
?? ??? ??? ?Class.forName(drive);
?? ??? ??? ?System.out.println("驅(qū)動(dòng)加載成功");
?? ??? ??? ?con = DriverManager.getConnection(this.connStr, this.userName,
?? ??? ??? ??? ??? ?this.userPwd);
?? ??? ??? ?System.out.println("數(shù)據(jù)庫(kù)連接成功");
?? ??? ??? ?//pstm = con.prepareStatement(sql);
?? ??? ??? ?
?? ??? ??? ?stmt = con.createStatement();
?? ??? ??? ?
?? ??? ??? ?rs = stmt.executeQuery(sql);
?? ??? ??? ?
?? ??? ??? ?while (rs.next()) {

?? ??? ??? ??? ?StuDomain stuDomain=new StuDomain();
?? ??? ??? ??? ?stuDomain.setId(rs.getString(1));
?? ??? ??? ??? ?stuDomain.setStuName(rs.getString(2));
?? ??? ??? ??? ?
?? ??? ??? ??? ?stuLists.add(stuDomain);

?? ??? ??? ?}
?? ??? ??? ?System.out.println("stuLists.size():"+stuLists.size());

?? ??? ?} catch (Exception e) {
?? ??? ??? ?System.out.println("數(shù)據(jù)庫(kù)連接異常");
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?return null;
?? ??? ?} finally {
?? ??? ??? ?try {
?? ??? ??? ??? ?if(rs!=null){
?? ??? ??? ??? ??? ?rs.close();?? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(stmt!=null){
?? ??? ??? ??? ??? ?stmt.close();
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(con!=null){
?? ??? ??? ??? ??? ?con.close();
?? ??? ??? ??? ?}

?? ??? ??? ?} catch (SQLException e) {
?? ??? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return stuLists;
?? ?}

}

?

MainActivity 并將數(shù)據(jù)顯示在ListView上

package com.example.jdtsproc;

import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.os.Handler;

import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

??? private Button btn_connect;
?? ?private ListView lv_lists;
?? ?
?? ?private List<StuDomain> stuLists;

?? ?private SqlHelper sh=new SqlHelper("xxx.xx.xxx.xx", "MyDb1", "sa", "sa");//第一個(gè)參數(shù)是訪問(wèn)的遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器的ip
?? ?private Handler mHandler=new Handler(){
?? ??? ?public void handleMessage(android.os.Message msg) {
?? ??? ??? ?lv_lists.setAdapter(new StuAdapter());
?? ??? ?};
?? ?};
?? ?@Override
??? protected void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.activity_main);
?????? ?
??????? initView();
?????? ?
??????? initData();
?????? ?
??? }

?? ?private void initData() {
?? ??? ?btn_connect.setOnClickListener(new OnClickListener() {
?? ??? ??? ?
?? ??? ??? ?@Override
?? ??? ??? ?public void onClick(View v) {
?? ??? ??? ??? ?new Thread(){
?? ??? ??? ??? ??? ?
?? ??? ??? ?

?? ??? ??? ??? ??? ?public void run() {
?? ??? ??? ??? ??? ??? ?String sql="select *from stu";
?? ??? ??? ??? ??? ??? ?stuLists = sh.ExecuteQuery(sql);
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?mHandler.sendEmptyMessage(0);//發(fā)送消息
?? ??? ??? ??? ??? ??? ?//lv_lists.setAdapter(new StuAdapter());
?? ??? ??? ??? ??? ?};
?? ??? ??? ??? ?}.start();
?? ??? ??? ?}
?? ??? ?});
?? ?}

?? ?private void initView() {
?? ??? ?//找到我們所需要的
?? ??? ?btn_connect = (Button) findViewById(R.id.btn_connect);
?? ??? ?lv_lists = (ListView) findViewById(R.id.lv_lists);
?? ?}

?? ?class StuAdapter extends BaseAdapter{

?? ??? ?@Override
?? ??? ?public int getCount() {

?? ??? ??? ?return stuLists.size();
?? ??? ?}

?? ??? ?@Override
?? ??? ?public StuDomain getItem(int position) {

?? ??? ??? ?return stuLists.get(position);
?? ??? ?}

?? ??? ?@Override
?? ??? ?public long getItemId(int position) {
?? ??? ??? ?
?? ??? ??? ?return position;
?? ??? ?}

?? ??? ?@Override
?? ??? ?public View getView(int position, View convertView, ViewGroup parent) {
?? ??? ??? ?StuViewHolder stuHolder;
?? ??? ??? ?if(convertView==null){
?? ??? ??? ??? ?convertView=View.inflate(getApplicationContext(), R.layout.list_main, null);
?? ??? ??? ??? ?stuHolder=new StuViewHolder();
?? ??? ??? ??? ?stuHolder.tv_id=(TextView) convertView.findViewById(R.id.tv_id);
?? ??? ??? ??? ?stuHolder.tv_stuname=(TextView) convertView.findViewById(R.id.tv_stuname);
?? ??? ??? ??? ?stuHolder.iv_photos=(ImageView) convertView.findViewById(R.id.iv_photos);
?? ??? ??? ?}else{
?? ??? ??? ??? ?stuHolder=(StuViewHolder) convertView.getTag();
?? ??? ??? ?}
?? ??? ??? ?stuHolder.tv_id.setText(getItem(position).getId());
?? ??? ??? ?stuHolder.tv_stuname.setText(getItem(position).getStuName());
?? ??? ??? ?stuHolder.iv_photos.setImageResource(R.drawable.photopager);
?? ??? ??? ?return convertView;
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?class StuViewHolder{
?? ??? ?public TextView tv_id;
?? ??? ?public TextView tv_stuname;
?? ??? ?public ImageView iv_photos;
?? ?}
?
}

?

最后奉獻(xiàn)jtds的兩個(gè)jar包??? 永久鏈接:https://pan.baidu.com/s/1YBW1I_ddSKe7vcIouDXKrg 密碼:0v95

轉(zhuǎn)載于:https://www.cnblogs.com/ww7018/p/9484159.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Android 使用jtds远程访问数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。