#android #sql-server
#Android #sql-сервер
Вопрос:
я пытаюсь подключиться к базе данных SQL Server из Android Studio, я использую jtds и уже импортирую «jtds-1.3.1.jar » модуль для android studio
в части импорта под строкой я получил ошибку
import net.sourceforge.jtds.jdbc.*;
и ошибка заключается в:
"error: package net.sourceforge.jtds.jdbc does not exist"
. я не знаю, чего мне не хватает.
package com.example.mycar4;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.StrictMode;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import net.sourceforge.jtds.jdbc.*;
public class database extends AppCompatActivity {
// Declaring layout button, edit texts
Button login;
EditText username,password;
ProgressBar progressBar;
// End Declaring layout button, edit texts
// Declaring connection variables
Connection con;
String un,pass,db,ip;
String usernam,passwordd;
//End Declaring connection variables
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
// Getting values from button, texts and progress bar
login = (Button) findViewById(R.id.btn_Login);
username = (EditText) findViewById(R.id.et_username);
password = (EditText) findViewById(R.id.et_password);
progressBar = (ProgressBar) findViewById(R.id.pbbar);
progressBar.setVisibility(View.GONE);
// End Getting values from button, texts and progress bar
// Declaring Server ip, username, database name and password
ip = "***";
db = "***";
un = "***";
pass = "***";
// Declaring Server ip, username, database name and password
// Setting up the function when button login is clicked
login.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
usernam = username.getText().toString();
passwordd = password.getText().toString();
CheckLogin checkLogin = new CheckLogin();// this is the Asynctask, which is used to process in background to reduce load on app process
checkLogin.execute("");
}
});
//End Setting up the function when button login is clicked
}
public class CheckLogin extends AsyncTask<String,String,String>
{
String z = "";
Boolean isSuccess = false;
@Override
protected void onPreExecute()
{
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(String r)
{
progressBar.setVisibility(View.GONE);
Toast.makeText(database.this, r, Toast.LENGTH_SHORT).show();
if(isSuccess)
{
Toast.makeText(database.this , "Login Successfull" , Toast.LENGTH_LONG).show();
//finish();
}
}
@Override
protected String doInBackground(String... params)
{
if(usernam.trim().equals("")|| passwordd.trim().equals(""))
z = "Please enter Username and Password";
else
{
try
{
con = connectionclass(un, pass, db, ip); // Connect to database
if (con == null)
{
z = "Check Your Internet Access!";
}
else
{
String query = "select * from login where username= '" usernam.toString() "' and password = '" passwordd.toString() "' ";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs.next())
{
z = "Login successful";
isSuccess=true;
con.close();
}
else
{
z = "Invalid Credentials!";
isSuccess = false;
}
}
}
catch (Exception ex)
{
isSuccess = false;
z = ex.getMessage();
}
}
return z;
}
}
@SuppressLint("NewApi")
public Connection connectionclass(String user, String password, String database, String server)
{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Connection connection = null;
String ConnectionURL = null;
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
ConnectionURL = "jdbc:jtds:sqlserver://sql5009.mywindowshosting.com;database=DB_A2C00B_login;user=DB_A2C00B_login_admin;password=login@123";
// ConnectionURL =
"jdbc:jtds:sqlserver://192.168.1.9;database=msss;instance=SQLEXPRESS;Network
Protocol=NamedPipes" ;
connection = DriverManager.getConnection(ConnectionURL);
}
catch (SQLException se)
{
Log.e("error here 1 : ", se.getMessage());
}
catch (ClassNotFoundException e)
{
Log.e("error here 2 : ", e.getMessage());
}
catch (Exception e)
{
Log.e("error here 3 : ", e.getMessage());
}
return connection;
}
}
Ответ №1:
Чтобы подключить приложение Android к серверу SQL, вам необходимо настроить веб-сервер (Http) между ними. Вы можете создать этот веб-сервер на любом языке, с которым вы знакомы, будь то java (J2EE) или php и т.д.
Этот веб-сервер будет размещен на вашем SQL Server и будет принимать Http-запросы от приложения Android, обрабатывать его, пересылать запрос в виде запросов на ваш SQL server, а затем возвращать его обратно в ваше приложение как REST / JSON (текущий формат отправки данных через Интернет) или SOAP / XML (старый способ отправки данных через Интернет).
Приложение >> Веб-сервер >> Сервер базы данных
Веб-сервер должен быть RESTful, и приложение может взаимодействовать с ним посредством Http-запросов через библиотеку Retrofit2.
Вот некоторые ресурсы, которые помогут вам начать;
- Доработать по квадрату.
- Модифицируйте репозиторий Github.
- Простой пример CRUD с веб-сервисом Java RESTful, краткое руководство.
- Веб-службы RESTful: учебное пособие Веб-службы Android Java
Ответ №2:
если вы используете Android Studio или eclipse, вы должны поместить jar-файл jtds в правильное местоположение, оно находится в папке libs (библиотека) внутри приложения n вашего проекта. Как только вы поместите его в библиотеки> щелкните правой кнопкой мыши, затем добавьте библиотеку.
еще одно замечание, которое вы должны использовать 1.2.7 или ниже, которое широко поддерживается