2011-07-02 15 views
0
String[] items = new String[10]; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Create a variable for the connection string. 
     String connectionUrl = "jdbc:sqlserver://servername.database.windows.net;" + 
      "databaseName=School;[email protected];password=userpassword"; 

     // Declare the JDBC objects. 
     Connection con = null; 
     Statement stmt = null; 
     ResultSet rs = null; 

    setListAdapter(new ArrayAdapter<String>(this, 
              android.R.layout.list_item, 
              new ArrayList())); 

    new AddStringTask().execute(); 

    try { 
     // Establish the connection. 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     con = DriverManager.getConnection(connectionUrl); 

     // Create and execute an SQL statement that returns some data. 
     String SQL = "SELECT TOP 10 * FROM dbo.tbl"; 
     stmt = con.createStatement(); 
     rs = stmt.executeQuery(SQL); 

     // Iterate through the data in the result set and display it. 
     while (rs.next()) { 
       String items = rs.getArray(2) + " " + rs.getArray(3); 
     } 
     } 

     // Handle any errors that may have occurred. 
     catch (Exception e) { 
     e.printStackTrace(); 
     } 
     finally { 
     if (rs != null) try { rs.close(); } catch(Exception e) {} 
     if (stmt != null) try { stmt.close(); } catch(Exception e) {} 
     if (con != null) try { con.close(); } catch(Exception e) {} 
     } 
} 

class AddStringTask extends AsyncTask<Void, String, Void> { 
    @Override 
    protected Void doInBackground(Void... unused) { 

     return(null); 
    } 

    @Override 
    protected void onProgressUpdate(String... item) { 
     ((ArrayAdapter)getListAdapter()).add(item[0]); 
    } 

    @Override 
    protected void onPostExecute(Void unused) { 
     Toast 
      .makeText(AsyncDemo.this, "Done!", Toast.LENGTH_SHORT) 
      .show(); 
    } 
} 

在onCreate內部的while循環中,我想從遠程數據庫的sql azure表中獲得10行和2列,然後將其存儲在一個字符串數組中。然後,該字符串數組以列表視圖的形式輸出給用戶。 JDBC驅動下載鏈接min.bz/wC4Am(非Windows用戶獲取壓縮文件,最後一個列出)還更新了鏈接。如何將sql azure數據檢索到列表視圖中?

回答

1

Android-Java-SQLAzure很好的結合,恭喜!

另一方面,爲什麼直接從移動應用程序訪問數據庫(SQL Azure)?這有幾個缺點:

  • 您需要在移動應用程序上包含SQL Server適配器和JDBC庫,這將需要至少1 MB的大小。
  • 您的應用程序用戶將能夠使用一些技巧來查看您的數據庫密碼。這是您系統的一個重大安全漏洞!用戶甚至可以放下你的桌子。
  • 移動應用程序(尤其是Android)不應該首選直接使用數據庫(因爲Android活動循環策略,應用程序可能會暫停一段時間,同時數據庫連接可能會丟失,並且由於此原因會出現各種意外的異常。) 。

因此,你應該創建一個Java或ASP.NET Web服務或REST API,你可以通過這個代理執行你的查詢,讓您在JSON結果返回,或XML或格式良好的Java可以輕鬆解析並調整你的ArrayAdapter。

+0

ALP巴爾幹THX。看起來我將使用Web服務來獲取數據。 – camelCaseD

+0

是的,這是更安全和方便的解決方案。 –

相關問題