記錄我的學習過程:我是android8.0,jdk13.0
1、要先下載jdbc的兩個包(我忘記在哪下載了,可以自行搜一下)
注意:下載之后復制到android studio項目app的libs中,然后右鍵該包,選擇add as library,確定之后就可以了。
2、連接sqlserver數據庫前必做的事:(以下鏈接很詳細)
https://zhidao.baidu.com/question/1896011812162672700.html
3、第一步完成后,就已經知道數據庫用戶名和密碼了,接下來開始寫代碼:
sqlserver數據庫URL是jdbc:jtds:sqlserver://電腦ip地址:1433;DatabaseName=你的數據庫名;
ip地址請看此鏈接:https://jingyan.baidu.com/article/63f2362816d56c0208ab3dd5.html
(1)MainActivity.java
1 package com.example.jdbctest; 2 3 import androidx.appcompat.app.AppCompatActivity; 4 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.View; 8 import android.view.ViewManager; 9 import android.widget.Button; 10 import android.widget.EditText; 11 12 import java.sql.Connection; 13 import java.sql.DriverManager; 14 import java.sql.PreparedStatement; 15 import java.sql.ResultSet; 16 import java.sql.SQLException; 17 import java.sql.Statement; 18 19 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 20 private Button createDataBase,addData; 21 private EditText resultText; 22 String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; 23 //String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=JDBCDemo"; 24 String dbURL="jdbc:jtds:sqlserver://192.168.xxx:1433;DatabaseName=JDBCDemo";//數據庫連接url 25 String userName="sa";//數據庫用戶名 26 String userPwd="sasasa";//數據庫密碼 27 Connection con; 28 29 30 @Override 31 protected void onCreate(Bundle savedInstanceState) { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.activity_main); 34 init();//初始化組件 35 addData.setOnClickListener(this); 36 } 37 38 39 private void init() { 40 createDataBase=(Button)findViewById(R.id.create_database); 41 addData=(Button)findViewById(R.id.add_data); 42 resultText=(EditText)findViewById(R.id.result_text); 43 } 44 45 46 @Override 47 public void onClick(View v) { 48 switch (v.getId()){ 49 case R.id.add_data: 50 new Thread(new Runnable() { 51 @Override 52 public void run() { 53 try{ 54 Class.forName(driverName); //jdk版本6.0以上可以省略這句話 55 con= DriverManager.getConnection(dbURL,userName,userPwd); 56 String sql="select * from Library"; 57 Statement st=con.createStatement(); 58 ResultSet rs=st.executeQuery(sql); 59 while(rs.next()){ 60 Log.i("MainActivity",rs.getString("書籍名稱")); 61 } 62 rs.close(); 63 st.close(); 64 con.close(); 65 System.out.println("連接數據庫成功"); 66 }catch(Exception e){ 67 e.printStackTrace(); 68 } 69 } 70 }).start(); 71 break; 72 } 73 } 74 }
(2)xml文件:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/create_database" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="創建數據庫"/> <Button android:id="@+id/add_data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加數據"/> <EditText android:id="@+id/result_text" android:layout_width="300sp" android:layout_height="100sp"/> </LinearLayout>
查詢結果:
碰到的問題:
1.android4.0以上連接數據庫不能在主線程執行,要另外來一個子線程去執行,操作看上述代碼50-70行。
如果直接在主線程執行,會報以下錯誤:Attempt to invoke interface method 'java.sql.PreparedStatement java.sql.Connection.prepareStatement(java.lang.String)' on a null object reference
2.如果你的數據庫連接url寫成:jdbc:sqlserver://localhost:1433;DatabaseName=JDBCDemo
在eclipse上是可以連接成功的,但在android studio就會報錯:com.microsoft.sqlserver.jdbc.SQLServerException: 通過端口 1433 連接到主機 localhost 的 TCP/IP 連接失敗。錯誤:“Connection refused: connect。請驗證連接屬性。確保 SQL Server 的實例正在主機上運行,且在此端口接受 TCP/IP 連接,還要確保防火牆沒有阻止到此端口的 TCP 連接。
我也不知道為什么會錯,后來上網找了半天解決方法,最后終於解決了,就是將url改成 jdbc:jtds:sqlserver://192.168.56.1:1433;DatabaseName=JDBCDemo。
最后的牢騷:結果出來的一刻非常非常開心,覺得一切的辛苦都是值得的,雖然現在還在摸索狀態,也不清楚以后能不能做程序員,但是每解決完一個問題,我就會感覺自己能繼續走下去。