Android 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

大家好,我正在为数据库使用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: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(“创建帐户…”);