【问题标题】:How to populate list view in android with connection to sql server如何在 android 中填充列表视图并连接到 sql server
【发布时间】:2016-04-27 17:11:42
【问题描述】:

大家好,我已经尝试了一些代码,但如果有人可以帮助我,我希望没有任何工作。下面我将输入我的代码

AndroidManisfest:

<?xml version="1.0" encoding="utf-8"?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.andre.marques.moldartsqlserver">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".InicioActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".OrdemFabricoActivity"></activity>
</application>
</manifest>

activity_ordemfabrico.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
    android:id="@+id/EnterPays_atomPaysList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    tools:listitem="@layout/ofselect"
    android:layout_below="@+id/layout_inf" >
</ListView>
</LinearLayout>

ofselect.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:listPreferredItemHeightSmall"
android:orientation="horizontal"
android:showDividers="middle"
android:divider="?android:dividerVertical"
android:dividerPadding="8dp"
android:gravity="center">


<TextView android:id="@+id/Codart"
    style="?android:textAppearanceMedium"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:paddingLeft="?android:listPreferredItemPaddingLeft" />

<TextView android:id="@+id/quantidade"
    style="?android:textAppearanceMedium"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content" />
</LinearLayout>

连接类:

public class ConnectionClass {
String ip;
String classs;
String db;
String un;
String password;
public ConnectionClass() {
    classs = "net.sourceforge.jtds.jdbc.Driver";
    db = "DatabaseName";
    un = "user";
    password = "XXXXXXXX";
    ip = "192.xxx.x.xxx";
}
public ConnectionClass(String Ip, String Classs, String Db, String Un, String Password) {
    ip = Ip;
    classs = Classs;
    db = Db;
    un = Un;
    password = Password;
}
public String getip() {
    return ip;
}
public String getclasss() {
    return classs;
}
public String getdb() {
    return db;
}
public String getun() {
    return un;
}
public String getpassword() {
    return password;
}
public void setip(String Ip) {
    ip = Ip;
}
public void setdb(String Db) {
    db = Db;
}
public void setclasss(String Classs) {
    classs = Classs;
}
public void setun(String Un) {
    un = Un;
}
public void setpassword(String Password) {
    password = Password;
}
}

OrdemFabricoActivity:

public class OrdemFabricoActivity extends Activity {
ConnectionClass connectionclass;
ListView lst;
SimpleAdapter ADAhere;
String usernameS;
String datets;
String call, db, un, passwords;
Connection connect;
ResultSet rs;
@SuppressLint("NewApi")
private Connection CONN(String _user, String _pass, String _DB, String _server) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    Connection conn = null;
    String ConnURL = null;
    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        ConnURL = "jdbc:jtds:sqlserver://" + _server + ";" + "databaseName=" + _DB + ";user=" + _user + ";password=" + _pass + ";";
        conn = DriverManager.getConnection(ConnURL);
    } catch (SQLException se) {
        Log.e("ERRO", se.getMessage());
    } catch (ClassNotFoundException e) {
        Log.e("ERRO", e.getMessage());
    } catch (Exception e) {
        Log.e("ERRO", e.getMessage());
    }
    return conn;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ordemfabrico);
    lst = (ListView) findViewById(R.id.EnterPays_atomPaysList);
    /************* CONNECTION DATABASE VARIABLES ***************/
    connectionclass = new ConnectionClass();
    call = connectionclass.getip();
    un = connectionclass.getun();
    passwords = connectionclass.getpassword();
    db = connectionclass.getdb();
    connect = CONN(un, passwords, db, call);

    String querycmd = "select NUMOF, COD_ART, DESC_ART, OBSERVACOES, QUANT from tabof where tabof.ID_TO <> 5";
    try {
        Statement statement = connect.createStatement();
        rs = statement.executeQuery(querycmd);
        List<Map<String, String>> data = null;
        data = new ArrayList<Map<String, String>>();
        while (rs.next()) {
            Map<String, String> datanum = new HashMap<String, String>();
            datanum.put("A", rs.getString("COD_ART"));
            //datanum.put("B", rs.getString("QUANT"));
            data.add(datanum);
        }
        String[] fromwhere = { "A" };
        int[] viewswhere = { R.id.Codart };
        ADAhere = new SimpleAdapter(OrdemFabricoActivity.this, data, R.layout.ofselect, fromwhere, viewswhere);
        lst.setAdapter(ADAhere);
    } catch (SQLException e) {
        Toast.makeText(OrdemFabricoActivity.this, e.getMessage().toString(), Toast.LENGTH_LONG).show();
    }
}
}

这是我的代码,这是我使用此代码得到的结果,当我进行此活动时,我的手机屏幕是黑色的,没有任何反应。如果有人知道如何做到这一点,请帮助我。

【问题讨论】:

  • 你有网络电话吗?

标签: java android sql-server


【解决方案1】:

我从您的代码中观察到,您正在尝试使用 JDBC 驱动程序连接数据库。 android 不支持 JDBC。

但是Oracle 为android 提供了JDBC 驱动程序。

https://docs.oracle.com/cd/E17076_04/html/installation/build_android_jdbc.html

根据 oracle 文档,您必须了解 NDK 才能构建和配置 JDBC。我认为它的配置过程太复杂了。与 SQLITE 相比,JDBC 非常慢,因为从 sqlite 数据库访问数据不需要额外的服务器配置。

如果您的目的是将数据存储在本地数据库中,您必须首选 SQLite3 ,它嵌入了 android,访问速度快,并由 Google 推荐。它太容易使用了。

您不能直接与 sql server 和 android 建立连接。如果要将数据存储在本地数据库中,然后想在列表视图中显示记录,请使用 sqlite。您可以使用以下教程。

HOMEDATABASEAndroid SQLite Database Tutorial Android SQLite Database Tutorial

如果你真的想在sql-server中存储数据,你必须使用client-server连接。创建 Web 服务以从服务器访问数据,并在 android 中使用它并填充列表视图。例如,PHP 和 MySQL。 Refer this tutorial

我认为它对你有帮助。

【讨论】:

  • 但是我在android中看到了几个关于JDBC的教程,我已经下载了lib,就像他们说我真的很想像他们使用JDBC那样做
  • 是的,您可以配置与 JDBC 的连接。它不推荐。检查这个答案stackoverflow.com/questions/12233145/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2011-02-28
  • 2017-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多