2015-05-27 31 views
2

這裏是我的所有代碼。我正在嘗試連接到我的SQL服務器。這些句子中的內容實際上是存在的。真實的用戶名和密碼。但我錯誤catch(未連接)Null。請讓我知道錯誤可能在哪裏。「空」連接jtds.jdbc1.3.1連接到SQL服務器

而且我還在清單中添加了Internet權限。 我從這篇文章中碰到 - link

package com.eample.databasetester; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.util.Log; 
    import android.widget.TextView; 
    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.ResultSet; 
    import java.sql.Statement; 

    public class MainActivity extends Activity { 
     TextView txv1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     txv1=(TextView)findViewById(R.id.text_view); 
     query2(); 
    } 
    public void query2() 
    { 
     txv1.setText("connected"); 
    Log.i("Android"," MySQL Connect Example."); 
    Connection conn = null; 
    try { 
    String driver = "net.sourceforge.jtds.jdbc.Driver"; 
    Class.forName(driver).newInstance(); 
    String connString = "jdbc:jtds:sqlserver://50.62.209.49:3306/test;encrypt=fasle;user=XXXX;password=YYYY;instance=SQLEXPRESS;"; 
    String username = "XXXX"; 
    String password = "YYYY"; 
    conn = DriverManager.getConnection(connString,username,password); 
    Log.w("Connection","open"); 
    Statement stmt = conn.createStatement(); 
    ResultSet reset = stmt.executeQuery("select * from test"); 


    while(reset.next()){ 
     txv1.setText("Data:"+reset.getString(3)); 

    } 
    conn.close(); 

    } catch (Exception e) 
    { 
     txv1.setText("Error connection" + e.getMessage()); 
    } 
    } 

}

回答

0

這是一個非常糟糕的主意。您不應該通過電話連接到網絡上的數據庫。首先,它要求你的數據庫是公開可尋址的,這是一個安全風險。其次,這意味着你的數據庫密碼在客戶端,而你並沒有物理地控制它們。你的應用程序將被反向設計,他們會得到你的密碼,然後你的數據被操縱。您應該總是從任何不使用Web服務控制的硬件抽象訪問數據庫。那麼密碼永遠不會離開你的機器,攻擊者所能造成的傷害是有限的。

第三,這段代碼不會工作,你不能在UI線程上做網絡IO。這可能是conn返回null的原因。但是,把這當作宇宙的一個標誌,告訴你以正確的方式解決問題,而不僅僅是改變線程。

+0

無論..謝謝你..它只是,作爲我的pkgname,測試。 –

+0

感謝您的指導。我正在嘗試學習Web服務。 –