我无法使用带有 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中使用活动模板时,我无法添加新的Java类吗?
最近的 Android Studio 无法连接到 Firebase?
带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中