我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express

Posted

技术标签:

【中文标题】我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express【英文标题】:I'm not able to connect to SQL Server Express using JDBC with Android studio 【发布时间】:2017-12-06 02:01:49 【问题描述】:

我正在尝试连接到 SQL Server (localhost) 以便能够将信息保存在数据库中,但是每当我出于某种原因尝试从 MainActivity.java 转到 Main2Activity.java 时,我的应用程序将停止工作大约 20 秒后出现一条 toast 消息(连接被拒绝),请告知我做错了什么

Main2Activity.java

package com.example.omar.externaldatabaseconnection;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Build;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Main2Activity extends AppCompatActivity 

EditText et_name, et_age, et_address, et_email ,et_telephone;
Button btn_save;
DatabaseConnection db;

@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);

if(Build.VERSION.SDK_INT > 9)
StrictMode.ThreadPolicy policy = new 
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);


et_name = (EditText) findViewById(R.id.et_name);
et_age = (EditText) findViewById(R.id.et_age);
et_address = (EditText) findViewById(R.id.et_address);
et_email = (EditText) findViewById(R.id.et_email);
et_telephone = (EditText) findViewById(R.id.et_telephone);
btn_save = (Button) findViewById(R.id.btn_save);
db = (DatabaseConnection) getApplication();
db.open();

btn_save.setOnClickListener(new View.OnClickListener() 
@Override
public void onClick(View v) 
db.save("insert into Employees values 
('"+et_name.getText().toString().trim()+"', 
'"+et_age.getText().toString().trim()+"', 
'"+et_address.getText().toString().trim()+"', 
'"+et_email.getText().toString().trim()+"', 
'"+et_telephone.getText().toString().trim()+"')");
finish();

);



数据库连接.java

package com.example.omar.externaldatabaseconnection;

import android.app.Application;
import android.widget.Toast;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Connection;


public class DatabaseConnection extends Application 

Connection connection;
String url = "";
String DBName = "EmployeesDB";
String DBUserName = "PC NAME";
String DBPassword = "MSSQL Password";
String HostName = "10.0.2.2";
String Port = "MY PORT NUMBER";
Statement statement;

public void open()
try 
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
url = "jdbc:jtds:sqlserver://" + HostName +":"+Port+";"+ "databaseName=" + 
DBName + ";user=" + DBUserName + ";password="+ DBPassword + " 
instance=SQLEXPRESS;";
connection = DriverManager.getConnection(url, DBUserName, DBPassword);

catch (Exception e)
Toast.makeText(this, e.getCause().getMessage(), Toast.LENGTH_LONG).show();




public void save (String sql)
try 
statement = connection.createStatement();
statement.executeQuery(sql);

catch (Exception ex)
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show();



【问题讨论】:

【参考方案1】:

Sir android 是一个移动平台,您不能直接将 android 应用程序与任何数据库服务器(即 Sql 服务器、mysql 或 oracle)连接,您必须创建一个本地 SQLITE 数据库并通过从任何上面再次提到了通过 WEB SERVICE 的数据库服务器,如果您选择 php、asp、java 等来创建您的 WEB 服务,这完全取决于您。填充 SQLITE 数据库后,您将能够在本地 SQLITE 数据库上执行查询。

简单来说,WEB SERVICE 是 android 应用程序和数据库服务器之间的桥梁,您必须使用一个。

【讨论】:

非常感谢您提供的有用信息,但我尝试这种方法的主要原因是 youtube 上的许多视频都说使用 JDBC 使您能够像我那样访问数据库。

以上是关于我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express的主要内容,如果未能解决你的问题,请参考以下文章

Android studio 3.6 无法打开模拟器

在Android studio中使用活动模板时,我无法添加新的Java类吗?

最近的 Android Studio 无法连接到 Firebase?

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中

无法在 android studio 中生成使用 react native 制作的 apk 项目

Android Studio Gradle Sync:“无法加载类...”