2016-04-27 6 views
0

こんにちは、私はいくつかのコードを試しましたが、誰かが私を助けてくれると期待していませんでした。SQL Serverに接続してAndroidでリストビューを作成する方法

<?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> 

ConnectionClass:

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; 
} 
} 
私は私のコード

AndroidManisfestを置くベロー

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(); 
    } 
} 
} 

これは、私はそれは私がこの活動に行くと自分の携帯電話の画面は黒と何が起こるです。このコードを取得する結果私のコードです。私は誰かがこれを行う方法を知っている場合、ラベルのコダートを入れて、データベースのいくつかのキャンプの価値を定量化したかった私を助けてください。

+0

ネットワーク通話はありますか? – Haroon

答えて

0

コードから、JDBCドライバを使用してデータベースに接続しようとしています。 JDBCはアンドロイドによってサポートされていません。

しかし、OracleはAndroid用のJDBCドライバを提供しています。

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

のOracleドキュメントを従えば、あなたは、JDBCを構築し、設定するには、NDKの知識を持っている必要があります。私はその複雑すぎるプロセスを構成すると思います。 JDBCはSQLiteと比較して非常に遅いですが、sqliteデータベースからデータにアクセスするために余分なサーバー構成が必要ないためです。

ローカルデータベースにデータを格納することを目的とする場合は、Googleが高速アクセスして推奨するアンドロイドに組み込まれたSQLite3を使用することをお勧めします。その使い方は簡単すぎる。

sql serverとandroidを直接接続することはできません。ローカルデータベースにデータを格納してからレコードをlistviewに表示する場合は、sqliteを使用します。次のチュートリアルを使用できます。

HOMEDATABASEAndroid SQLite Database Tutorial Android SQLite Database Tutorial

あなたは本当に、SQLサーバーにデータを保存したい場合は、クライアント・サーバー接続を使用する必要があります。サーバーからのデータにアクセスするためのWebサービスを作成し、アンドロイドでそれを消費し、リストビューを作成します。たとえば、PHPとMySQL。 Refer this tutorial

私はあなたを助けると思います。

+0

しかし、私はアンドロイドでJDBCについていくつかのチュートリアルを見ました。私は彼らがJDBCと同じようにしたいと言ったようにlibをダウンロードしました。 –

+0

はい、JDBCとの接続を設定できるかもしれません。それはお勧めしません。この回答を確認するhttp://stackoverflow.com/questions/12233145/connecting-to-mysql-from-android-with-jdbc – USKMobility

関連する問題