Android 使用jtds遠端存取資料庫

來源:互聯網
上載者:User

標籤:import   資料   manage   use   bean   sqlserver   sql   載入   adapter   

最近老師讓我用jtds這個jar包遠端存取資料庫中的資料,雖然不難,但有幾個點還是要注意一下的。

1、jtds的jar包我使用的是1.2.7這個版本的,如果是Java工程使用的是1.3.1這個版本,Android工程不能使用1.3.1否則串連不上資料庫

2、遠端資料庫伺服器的防火牆要關閉

 

下面是如何使用jtds的案例

Javabean有兩個欄位一個是id,一個是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;
    }
}

 

訪問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;//資料庫名
        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("驅動載入成功");
            con = DriverManager.getConnection(this.connStr, this.userName,
                    this.userPwd);
            System.out.println("資料庫連接成功");
            //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("資料庫連接異常");
            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 並將資料顯示在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");//第一個參數是訪問的遠端資料庫伺服器的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);//發送訊息
                        //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;
    }
 
}

 

最後奉獻jtds的兩個jar包    永久連結:https://pan.baidu.com/s/1YBW1I_ddSKe7vcIouDXKrg 密碼:0v95

Android 使用jtds遠端存取資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.