2017-12-06 19 views
-2

何らかの理由でこれを達成しようとすると、データベースの情報を保存できるようにSQL Server(localhost)に接続しようとしています私は、約20秒間動作しなくなった自分のアプリケーションをMain2Activity.javaするMainActivity.javaから行くときに(接続は拒否した)、私がやっているものをお知らせくださいトーストメッセージを思い付く間違っAndroidスタジオでJDBCを使用してSQL Server Expressに接続できません

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(); 
} 
}); 
} 

} 

DatabaseConnection.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はモバイルプラットフォームであり、アンドロイドアプリケーションをSql server、mysql、oracleなどのデータベースサーバーに直接接続することはできません。ローカルのSQLITEデータベースを作成し、 Webサービスを介して上記のデータベースサーバーを再度、あなたがあなたのWEBサービスを作るためのPHP、ASP、Javaなどを選択した場合、それはあなた次第です。 SQLiteデータベースに値を設定すると、ローカルのSQLiteデータベースでクエリを実行できます。

簡単に言えば、WEB SERVICEはAndroidアプリケーションとデータベースサーバーの間のブリッジであり、あなたはそれを使用する必要があります。

+0

しかし、有益な情報をいただきありがとうございます。YouTubeの多くのビデオでは、JDBCを使用すると、私がやったようにデータベースにアクセスできるようになっています。 –

関連する問題