我刚开始使用Android Studio并且已经遇到问题,我需要通过我的手机连接到sqlserver上的数据库,但是在整个事情开始工作之前崩溃了,我需要一些帮助,这是代码:
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Farmaciapp extends AppCompatActivity {
EditText edtMed =(EditText)findViewById(R.id.edtMedicamento);
String ConsulMed = edtMed.getText().toString();
public void Meds (View v){
Connection conexion = null;
String url = "jdbc:jtds:sqlserver://192.168.1.69;databaseName=Medicamentos;";
String query = "Select Descripcion from Medicina where Nombre = '" + ConsulMed + "'";
try {
Connection con = DriverManager.getConnection(url);
Statement state = con.createStatement();
ResultSet resultado = state.executeQuery(query);
while (resultado.next()){
String res = resultado.getString(1);
TextView Explicacion = (TextView) findViewById(R.id.mltExplic);
Explicacion.setText(res);
}
}catch (Exception e){
Toast.makeText(getApplicationContext(), e.getMessage() , Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_farmaciapp);
}
}
答案 0 :(得分:1)
原因是你正试图访问尚未创建的避风港。换句话说,我们无法引用或调用 findViewById ,直到布局膨胀为止。
所以请进行以下更改
public class Farmaciapp extends AppCompatActivity {
EditText edtMed;
String ConsulMed = edtMed.getText().toString();
public void Meds (View v){
Connection conexion = null;
String url = "jdbc:jtds:sqlserver://192.168.1.69;databaseName=Medicamentos;";
String query = "Select Descripcion from Medicina where Nombre = '" + ConsulMed + "'";
try {
Connection con = DriverManager.getConnection(url);
Statement state = con.createStatement();
ResultSet resultado = state.executeQuery(query);
while (resultado.next()){
String res = resultado.getString(1);
TextView Explicacion = (TextView) findViewById(R.id.mltExplic);
Explicacion.setText(res);
}
}catch (Exception e){
Toast.makeText(getApplicationContext(), e.getMessage() , Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_farmaciapp);
edtMed =(EditText)findViewById(R.id.edtMedicamento);
}
}
确保在onCreate之后访问edtMed而不是在它之前工作。 onCreate()是活动扩展布局的方式。