Android Jtds驱动程序错误
大家好,我正在为数据库使用jtds驱动程序 但我这里有个问题,我无法解决。问题是:Android Jtds驱动程序错误,android,jtds,Android,Jtds,大家好,我正在为数据库使用jtds驱动程序 但我这里有个问题,我无法解决。问题是: java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:299) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:3
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.VerifyError: net/sourceforge/jtds/jdbc/TdsCore
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:359)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:179)
at java.sql.DriverManager.getConnection(DriverManager.java:144)
at com.verimbt.elmacafeplus.SignupActivity.connectionclass(SignupActivity.java:244)
at com.verimbt.elmacafeplus.SignupActivity$RegisterLogin.doInBackground(SignupActivity.java:184)
at com.verimbt.elmacafeplus.SignupActivity$RegisterLogin.doInBackground(SignupActivity.java:144)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
... 4 more
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:299)
位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:219)
位于java.util.concurrent.FutureTask.run(FutureTask.java:239)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
运行(Thread.java:841)
原因:java.lang.VerifyError:net/sourceforge/jtds/jdbc/TdsCore
位于net.sourceforge.jtds.jdbc.JtdsConnection。(JtdsConnection.java:359)
位于net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
位于java.sql.DriverManager.getConnection(DriverManager.java:179)
位于java.sql.DriverManager.getConnection(DriverManager.java:144)
位于com.verimbt.elmacafeplus.SignupActivity.connectionclass(SignupActivity.java:244)
登录com.verimbt.elmacafeplus.SignupActivity$RegisterLogin.doInBackground(SignupActivity.java:184)
登录com.verimbt.elmacafeplus.SignupActivity$RegisterLogin.doInBackground(SignupActivity.java:144)
在android.os.AsyncTask$2.call(AsyncTask.java:287)
在java.util.concurrent.FutureTask.run(FutureTask.java:234)处
... 4更多
我能做什么我到处检查,但我找不到任何错误开发,但用户从Android 4.3版本报告此错误。。。我使用的是5.0.1版本,我没有给出任何错误
注册活动
public class SignupActivity extends AppCompatActivity {
// Declaring connection variables
int registerednew=0;
Connection con;
protected String un,pass,db,ip;
//End Declaring connection variables
//Database den çekilen değerlerin lokalleri
String Name;
String Surname;
String Gsm;
int KategoriID;
String QRCodeID;
int OnayID;
String Email;
int UserID;
String Password;
///////////////////////////////////////////////
ProgressDialog progressDialog;
private static final String TAG = "SignupActivity";
@Bind(R.id.input_name) EditText _nameText;
@Bind(R.id.input_surname) EditText _surnameText;
@Bind(R.id.input_email) EditText _emailText;
@Bind(R.id.input_gsm) EditText _gsmText;
@Bind(R.id.input_password) EditText _passwordText;
@Bind(R.id.btn_signup) Button _signupButton;
@Bind(R.id.link_login) TextView _loginLink;
String saveddbpass;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
ButterKnife.bind(this);
EditText cepno=(EditText) findViewById(R.id.input_gsm);
// Declaring Server ip, username, database name and password
ip = ********
db =*******
un = ********
pass = *********;
SharedPreferences prefs = new LoginManager(this, this.getSharedPreferences("Myshared", Context.MODE_PRIVATE));
prefs.edit().putString("Pass",pass);
saveddbpass=prefs.getString("Pass",pass);
// Declaring Server ip, username, database name and password
// Listening to Login Screen link
cepno.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
signup();
handled = true;
}
return handled;
}
});
_signupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signup();
}
});
_loginLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Finish the registration screen and return to the Login activity
finish();
}
});
}
public void signup() {
Log.d(TAG, "Signup");
if (!validate()) {
onSignupFailed();
return;
}
_signupButton.setEnabled(false);
String name = _nameText.getText().toString();
String surname = _surnameText.getText().toString();
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
String gsm = _gsmText.getText().toString();
// Closing registration screen
// Switching to Login Screen/closing activity_register screen
new RegisterLogin().execute(email,password,name,gsm,surname);
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
// On complete call either onSignupSuccess or onSignupFailed
// depending on success
onSignupSuccess();
// onSignupFailed();
}
}, 1000);
}
public class RegisterLogin extends AsyncTask<String,String,String>
{
String z ;
Boolean isSuccess = false;
@Override
protected void onPostExecute(String z)
{
Toast.makeText(SignupActivity.this, z, Toast.LENGTH_SHORT).show();
if(isSuccess)
{
progressDialog = new ProgressDialog(SignupActivity.this,
R.style.AppTheme_Dark_Dialog);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Creating Account...");
progressDialog.show();
progressDialog.dismiss();
Toast.makeText(SignupActivity.this , "Kayıt İşlemi Tamamlandı,Şimdi giriş yapabilirsiniz." , Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
protected String doInBackground(String... args)
{
String Email2 =args[0];
String pass2=args[1];
String Name2 = args[2];
String Gsm2 = args[3];
String Surname2=args[4];
String QrCode;
if(Email2.trim().equals("")|| pass2.trim().equals(""))
z = "Please enter Username and Password";
else
{
try
{
con = connectionclass(un, saveddbpass, db, ip); // Connect to database
if (con == null)
{
z = "Check Your Internet Access!";
}
else
{
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy");
SimpleDateFormat df2 = new SimpleDateFormat("ddmm");
SimpleDateFormat df3 = new SimpleDateFormat("dd/MM/yyyy");
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
String formattedDate = df.format(c.getTime());
String formattedDate2 = df2.format(c.getTime());
String KayitTarihi = df3.format(c.getTime())+" "+hour+":"+minute+":"+second;
QrCode=formattedDate+Gsm2+formattedDate2;
Log.i("qrcode",QrCode);
// Change below query according to your own database.
String query = "insert into elmacustomers(KayitTarihi,QRCodeID,Gsm,Name,Surname,Email,Password,OnayID) VALUES('"+KayitTarihi+"',"+"'"+ QrCode.toString()+"',"+"'"+Gsm2.toString()+"',"+"'"+Name2.toString()+"','"+Surname2.toString()+"','"+Email2.toString()+"','"+pass2.toString()+"',"+"0) ";
Statement stmt = con.createStatement();
try {
stmt.executeUpdate(query);
} catch (SQLException e) {
z=Email2+" E-mail adresi sistemde kayitlidir";
onPause();
}
z="Kayıt İşlemi Tamamlandı,Şimdi giriş yapabilirsiniz.";
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
i.putExtra("Email", Email);
i.putExtra("Pass", pass2);
i.putExtra("flag",0);
setResult(Activity.RESULT_OK,i);
finish();
}
}
catch (Exception ex)
{
isSuccess = false;
}
}
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");
ConnectionURL = "jdbc:jtds:sqlserver://" + server +"/"+ database + ";user=" + user+ ";password=" + password + ";";
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;
}
public void onSignupSuccess() {
_signupButton.setEnabled(true);
setResult(RESULT_OK, null);
finish();
}
public void onSignupFailed() {
Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
_signupButton.setEnabled(true);
}
public boolean validate() {
boolean valid = true;
String name = _nameText.getText().toString();
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
if (name.isEmpty() || name.length() < 3) {
_nameText.setError("at least 3 characters");
valid = false;
} else {
_nameText.setError(null);
}
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError("enter a valid email address");
valid = false;
} else {
_emailText.setError(null);
}
if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
_passwordText.setError("between 4 and 10 alphanumeric characters");
valid = false;
} else {
_passwordText.setError(null);
}
return valid;
}
}
公共类注册活动扩展了AppCompatActivity{
//声明连接变量
int registerednew=0;
连接con;
受保护字符串un、pass、db、ip;
//结束声明连接变量
//dençekilen değerlin lokalleri数据库
字符串名;
串姓;
字符串Gsm;
int KategoriID;
字符串QRCodeID;
国际OnayID;
字符串电子邮件;
int用户标识;
字符串密码;
///////////////////////////////////////////////
进行对话进行对话;
私有静态最终字符串TAG=“SignupActivity”;
@绑定(R.id.input\u name)编辑文本\u nameText;
@绑定(R.id.input_姓氏)编辑文本_姓氏文本;
@绑定(R.id.input\u email)编辑文本\u emailText;
@绑定(R.id.input\u gsm)编辑文本\u gsmText;
@Bind(R.id.input_password)EditText_passwordText;
@绑定(R.id.btn_signup)按钮_signup按钮;
@绑定(R.id.link\u login)文本视图\u loginLink;
字符串saveddbpass;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
把(这个)绑起来;
EditText cepno=(EditText)findViewById(R.id.input\u gsm);
//声明服务器ip、用户名、数据库名称和密码
ip=********
分贝=*******
un=********
通过=********;
SharedReferences prefs=新的LoginManager(this,this.getSharedReferences(“Myshared”,Context.MODE_PRIVATE));
prefs.edit().putString(“通过”,通过);
saveddbpass=prefs.getString(“Pass”,Pass);
//声明服务器ip、用户名、数据库名称和密码
//监听登录屏幕链接
cepno.setOnEditorActionListener(新的TextView.OnEditorActionListener(){
@凌驾
公共布尔onEditorAction(TextView v,int actionId,
关键事件(事件){
布尔值=假;
if(actionId==EditorInfo.IME\u ACTION\u SEND){
注册();
已处理=正确;
}
处理退货;
}
});
_signupButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
注册();
}
});
_loginLink.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//完成注册屏幕并返回登录活动
完成();
}
});
}
公开无效注册(){
日志d(标签“注册”);
如果(!validate()){
onSignupFailed();
返回;
}
_signupButton.setEnabled(false);
字符串名称=_nameText.getText().toString();
字符串姓氏=_姓氏text.getText().toString();
字符串email=_emailText.getText().toString();
字符串密码=_passwordText.getText().toString();
字符串gsm=_gsmText.getText().toString();
//关闭注册屏幕
//切换到登录屏幕/关闭活动\注册屏幕
new RegisterLogin().execute(电子邮件、密码、姓名、gsm、姓氏);
新的android.os.Handler().postDelayed(
新的Runnable(){
公开募捐{
//在完成调用时,onSignupSuccess或onSignupFailed
//取决于成功
onSignupSuccess();
//onSignupFailed();
}
}, 1000);
}
公共类RegisterLogin扩展异步任务
{
字符串z;
布尔值isSuccess=false;
@凌驾
受保护的void onPostExecute(字符串z)
{
Toast.makeText(SignupActivity.this,z,Toast.LENGTH_SHORT.show();
如果(isSuccess)
{
progressDialog=新建progressDialog(SignupActivity.this,
R.style.AppTheme(黑色对话框);
progressDialog.setUndeterminate(true);
progressDialog.setMessage(“创建帐户…”);