Android studio連接sqlserver數據庫


記錄我的學習過程:我是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>
View Code

 

 

查詢結果:

 

碰到的問題:

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。

 

 最后的牢騷:結果出來的一刻非常非常開心,覺得一切的辛苦都是值得的,雖然現在還在摸索狀態,也不清楚以后能不能做程序員,但是每解決完一個問題,我就會感覺自己能繼續走下去。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM