<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

    關(guān)于安卓通過webservice訪問數(shù)據(jù)庫問題

     ============問題描述============
      訪問數(shù)據(jù)庫時,手機(jī)能增刪數(shù)據(jù)庫的數(shù)據(jù)就是顯示不了數(shù)據(jù)庫的里的數(shù)據(jù)不知道是哪里的問題,用的HTTP
      這是我webservice中的產(chǎn)看所有信息的方法:
    public List<string> selectAllCargoInfor()
    {
    List<string> list = new List<string>();
    try
    {
    string sql = "select * from C";
    SqlCommand cmd = new SqlCommand(sql,sqlCon);
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    //將結(jié)果集信息添加到返回向量中
    list.Add(reader[0].ToString());
    list.Add(reader[1].ToString());
    list.Add(reader[2].ToString());
    }
    reader.Close();
    cmd.Dispose();
    }
    catch(Exception)
    {
    }
    return list;
    }
      接下來是安卓端的:
      這個是MainActivity中的設(shè)置LISTVIEW的方法
    private void setListView() {
    listView.setVisibility(View.VISIBLE);
    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    list = dbUtil.getAllInfo();
    adapter = new SimpleAdapter(MainActivity.this, list, R.layout.adapter_item,
    new String[] { "Cno", "Cname", "Cnum" },
    new int[] { R.id.txt_Cno, R.id.txt_Cname, R.id.txt_Cnum });
    listView.setAdapter(adapter);
    }
      這個是操作類:
    public List<HashMap<String, String>> getAllInfo() {
    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    arrayList.clear();
    brrayList.clear();
    crrayList.clear();
    new Thread(new Runnable() {
    @Override
    public void run() {
    // TODO Auto-generated method stub
    crrayList = Soap.GetWebServre("selectAllCargoInfor", arrayList, brrayList);
    }
    }).start();
    HashMap<String, String> tempHash = new HashMap<String, String>();
    tempHash.put("Cno", "Cno");
    tempHash.put("Cname", "Cname");
    tempHash.put("Cnum", "Cnum");
    list.add(tempHash);
    for (int j = 0; j < crrayList.size(); j += 3) {
    HashMap<String, String> hashMap = new HashMap<String, String>();
    hashMap.put("Cno", crrayList.get(j));
    hashMap.put("Cname", crrayList.get(j + 1));
    hashMap.put("Cnum", crrayList.get(j + 2));
    list.add(hashMap);
    }
    return list;
    }
    連接webservice的那個方法HttpConnSoap應(yīng)該是沒問題的因?yàn)閿?shù)據(jù)庫的增刪都是可以的,就是無法實(shí)現(xiàn)這個顯示所有信息到LISTVIEW中的這個功能不知道為什么,LOGCAT中也是一片綠沒什么問題
      LOGCAT中的信息:
    05-02 15:51:40.642: I/System.out(3678): <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><selectAllCargoInforResponse xmlns="http://tempuri.org/"><selectAllCargoInforResult><string>1</string><string>rice</string><string>100</string><string>2</string><string>dog</string><string>50</string><string>3</string><string>白癡</string><string>25</string></selectAllCargoInforResult></selectAllCargoInforResponse></soap:Body></soap:Envelope>
    05-02 15:51:40.647: I/System.out(3678): <?xml version="1.0" encoding="utf-8"?
    05-02 15:51:40.647: I/System.out(3678): soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    05-02 15:51:40.647: I/System.out(3678): soap:Body
    05-02 15:51:40.647: I/System.out(3678): selectAllCargoInforResponse xmlns="http://tempuri.org/"
    05-02 15:51:40.647: I/System.out(3678): selectAllCargoInforResult
    05-02 15:51:40.647: I/System.out(3678): 0
    05-02 15:51:40.647: I/System.out(3678): string>1</string
    05-02 15:51:40.647: I/System.out(3678): string>rice</string
    05-02 15:51:40.647: I/System.out(3678): string>100</string
    05-02 15:51:40.647: I/System.out(3678): string>2</string
    05-02 15:51:40.652: I/System.out(3678): string>dog</string
    05-02 15:51:40.652: I/System.out(3678): string>50</string
    05-02 15:51:40.652: I/System.out(3678): string>3</string
    05-02 15:51:40.652: I/System.out(3678): string>白癡</string
    05-02 15:51:40.652: I/System.out(3678): string>25</string
    05-02 15:51:40.652: I/System.out(3678): /selectAllCargoInforResult
    05-02 15:51:40.652: I/System.out(3678): 1
      ============解決方案1============
      分析原因就是在線程還沒有執(zhí)行完時候,getAllInfo早已執(zhí)行完畢以后,,所以在執(zhí)行for (int j = 0; j < crrayList.size(); j += 3)時候, crrayList為零行。你取出的LOGCAT是執(zhí)行請求以后的返回數(shù)據(jù),這時候setListView方法早已經(jīng)走完,所以只有一行數(shù)據(jù)。截圖中的一行數(shù)據(jù)來自
      HashMap<String, String> tempHash = new HashMap<String, String>();
      tempHash.put("Cno", "Cno");
      tempHash.put("Cname", "Cname");
      tempHash.put("Cnum", "Cnum");
      list.add(tempHash);
      使用Thread應(yīng)該配合Handler來使用。
      我把代碼修改一下
    private final static int   REQUEST_SUCCESS = 1;
    private final static int   REQUEST_FALSE = 0;
    private void RequestData()
    {
    arrayList.clear();
    brrayList.clear();
    crrayList.clear();
    new Thread(new Runnable() {
    @Override
    public void run() {
    // TODO Auto-generated method stub
    crrayList = Soap.GetWebServre("selectAllCargoInfor", arrayList, brrayList);
    Message msg = new Message();
    if(crrayList.size()>0)
    {
    msg.what = REQUEST_SUCCESS;
    }
    else
    {
    msg.what = REQUEST_FALSE;
    }
    // 發(fā)送消息
    mHandler.sendMessage(msg);
    }
    }).start();
    }
    public Handler mHandler = new Handler(){
    // 接收消息
    @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    switch (msg.what)
    {
    case REQUEST_SUCCESS:
    setListView();
    break;
    case REQUEST_FALSE:
    // 做錯誤處理
    break;
    default:
    break;
    }
    }
    };
    private void setListView() {
    listView.setVisibility(View.VISIBLE);
    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    list = dbUtil.getAllInfo();
    adapter = new SimpleAdapter(MainActivity.this, list, R.layout.adapter_item,
    new String[] { "Cno", "Cname", "Cnum" },
    new int[] { R.id.txt_Cno, R.id.txt_Cname, R.id.txt_Cnum });
    listView.setAdapter(adapter);
    }
    public List<HashMap<String, String>> getAllInfo() {
    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> tempHash = new HashMap<String, String>();
    tempHash.put("Cno", "Cno");
    tempHash.put("Cname", "Cname");
    tempHash.put("Cnum", "Cnum");
    list.add(tempHash);
    for (int j = 0; j < crrayList.size(); j += 3) {
    HashMap<String, String> hashMap = new HashMap<String, String>();
    hashMap.put("Cno", crrayList.get(j));
    hashMap.put("Cname", crrayList.get(j + 1));
    hashMap.put("Cnum", crrayList.get(j + 2));
    list.add(hashMap);
    }
    return list;
    }
      執(zhí)行RequestData就可以,我沒法編譯,細(xì)節(jié)自己再調(diào)整看一下,應(yīng)該能解決問題了。
      你給的分?jǐn)?shù)太少了,大牛們都不給你解答。如果解決問題就給分哈。
      另外,Java多線程的操作可以系統(tǒng)學(xué)習(xí)一下。工作中使用極為頻繁

    posted on 2014-12-11 23:42 順其自然EVO 閱讀(885) 評論(0)  編輯  收藏 所屬分類: android

    <2014年12月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 最近中文字幕大全中文字幕免费| 日韩色视频一区二区三区亚洲| 在线看片免费人成视频福利| 亚洲国产精品丝袜在线观看| 国产精品亚洲综合天堂夜夜| 国产美女a做受大片免费| 亚洲精品无码日韩国产不卡av| 免费电影在线观看网站| 亚洲sss综合天堂久久久| 中文字幕影片免费在线观看| 亚洲人妖女同在线播放| 香蕉97超级碰碰碰免费公| 亚洲人成电影网站| 女人与禽交视频免费看| 亚洲国产成人精品无码区二本| 国产无遮挡色视频免费视频| 国产精品亚洲va在线观看| 亚洲精品国产精品乱码不卞| a免费毛片在线播放| 亚洲va无码专区国产乱码| 中文字幕在线免费观看| 亚洲xxxx18| 亚洲人成无码www久久久| 日本三级在线观看免费| 亚洲视频一区二区在线观看| 亚洲欧洲免费无码| 特级毛片A级毛片免费播放| 亚洲人成人77777网站| 2019中文字幕在线电影免费| 亚洲中文字幕乱码AV波多JI| 亚洲福利视频一区二区| 另类免费视频一区二区在线观看| 亚洲国产美女在线观看 | 国产大片免费网站不卡美女| 精品丝袜国产自在线拍亚洲| 国产青草视频免费观看97| GOGOGO高清免费看韩国| 亚洲videosbestsex日本| 亚洲 综合 国产 欧洲 丝袜| 国产精品区免费视频| 亚洲欧美成人av在线观看|