Расширение класса SqlDatabase (расширяет SQLiteOpenHelper) в другой файл класса (соединение SqlServer) - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь разработать приложение для Android. Проблема в том, что я не могу использовать свою базу данных sqld для класса Connection_Server.

1) Я попытался установить в классе Connection_Server «extends AppCompatActivity», а затем я получаю сообщение об ошибке (в LogCat) при запуске приложения.

Невозможно создать обработчик в потоке Thread [AsyncTask # 1,5, main], который не вызвал Looper.prepare ()

2) С помощью ALT + ENTER я создал создателя в Database_title.java, но я не знаю, что написать в super().

public Database_title(Connection_Server connection_server) {
    super();
}

вот мой класс базы данных Sql


import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.SQLException;
import android.icu.text.SimpleDateFormat;
import android.os.StrictMode;
import android.util.Log;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Date;
import java.util.Locale;

public class Connection_Server {
    private Database_title mDatabaseHelper;


    @SuppressLint("NewApi")
    public Connection CONN() {
        String ip = "46.246.205.218";
        String year_string = new SimpleDateFormat("yyyy", Locale.getDefault()).format(new Date());
        String classs = "net.sourceforge.jtds.jdbc.Driver";
        String db = "Main_"+year_string;
        String un = "David";
        String password = "*********";
        mDatabaseHelper = new Database_title(this);<-----HERE IS THE ERROR<------
        StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        Connection conn = null;
        String ConnURL;
        try {
            Class.forName(classs);

            Cursor res = mDatabaseHelper.getAllData_main();
            if (res.getCount()>0){
                switch (res.getString(2)){
                    case "text1":
                        db= "Database_Athens_Main"+year_string;
                        break;
                    case "text2":
                        db= "Database_Piraeus_Main"+year_string;
                        break;
                    case "text2":
                        db= "Database_South_Main"+year_string;
                        break;
                    case "text3":
                        db= "Database_North_Main"+year_string;
                        break;
                    case "text4":
                        db= "Database_West_Main"+year_string;
                        break;
                }
                Log.i("String Db","String DB: "+db);
            }else{
                db= "Database_Piraeus";
                Log.i("String Db","String DB: DEFAULT SET!!");
            }

            ConnURL = "jdbc:jtds:sqlserver://" + ip + ";" + "databaseName=" + db + ";user=" + un + ";password=" + password + ";";
            conn = DriverManager.getConnection(ConnURL);
        }
        catch (SQLException se)
        {
            Log.e("Error 1: ", se.getMessage());
        }
        catch (ClassNotFoundException e)
        {
            Log.e("Error 2: ", e.getMessage());
        }
        catch (Exception e)
        {
            Log.e("Error 3: ", e.getMessage());
        }
        return conn;
    }
}

и вот мой sql класс


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.Calendar;
import java.util.Date;

public class Database_title extends SQLiteOpenHelper {

    Date currentTime = Calendar.getInstance().getTime();

    private static final String Database_Name = "DatabaseDias.db";

    private static final String TABLE_NAME_1 = "main";
    private static final String TABLE_NAME_2 = "title";
    private static final String TABLE_NAME_3 = "events";

    private static final String COL1_1 = "ID";
    private static final String COL1_2 = "prs_nmb";
    private static final String COL1_3 = "pd";
    private static final String COL1_4 = "groupp";
    private static final String COL1_5 = "userid";
    private static final String COL1_6 = "passw";

    private static final String COL2_1 = "ID";
    private static final String COL2_2 = "prs_nmb";
    private static final String COL2_3 = "pd";
    private static final String COL2_4 = "groupp";
    private static final String COL2_5 = "date";
    private static final String COL2_6 = "cd_omd";
    private static final String COL2_7 = "area";
    private static final String COL2_8 = "daily_shf";
    private static final String COL2_9 = "chief";
    private static final String COL2_10 = "veh_type";
    private static final String COL2_11 = "driver_A";
    private static final String COL2_12 = "co_driver_A";
    private static final String COL2_13 = "veh_A";
    private static final String COL2_14 = "km_A";
    private static final String COL2_15 = "fuel_A";
    private static final String COL2_16 = "driver_B";
    private static final String COL2_17 = "co_driver_B";
    private static final String COL2_18 = "veh_B";
    private static final String COL2_19 = "km_B";
    private static final String COL2_20 = "fuel_B";

    private static final String COL3_1 = "ID";
    private static final String COL3_2 = "date";
    private static final String COL3_3 = "cd_omadas";
    private static final String COL3_4 = "orig_event";
    private static final String COL3_5 = "address";
    private static final String COL3_6 = "announcer";
    private static final String COL3_7 = "Events_descr";


    public Database_title(Context context) {
        super(context, Database_Name, null, 1);
        Log.d("Database Operations", "Database created...");
    }



    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable_1 = "CREATE TABLE " + TABLE_NAME_1 + "(" + COL1_1 +" INTEGER PRIMARY KEY AUTOINCREMENT,"+ COL1_2 +" INTEGER,"+ COL1_3 +" TEXT,"+ COL1_4 +" TEXT,"+ COL1_5 +" TEXT,"+ COL1_6 +" TEXT)";
        String createTable_2 = "CREATE TABLE " + TABLE_NAME_2 + "(" + COL2_1 +" INTEGER PRIMARY KEY AUTOINCREMENT,"+ COL2_2 +" INTEGER,"+ COL2_3 +" TEXT,"+ COL2_4 +" TEXT,"+ COL2_5 +" TEXT,"+ COL2_6 +" TEXT,"+ COL2_7 +" TEXT,"+ COL2_8 +" TEXT,"+ COL2_9 +" TEXT,"+ COL2_10 +" TEXT,"+ COL2_11 +" TEXT,"+ COL2_12 +" TEXT,"+ COL2_13 +" TEXT,"+ COL2_14 +" TEXT,"+ COL2_15 +" TEXT,"+ COL2_16 +" TEXT,"+ COL2_17 +" TEXT,"+ COL2_18 +" TEXT,"+ COL2_19 +" TEXT,"+ COL2_20 +" TEXT)";
        String createTable_3 = "CREATE TABLE " + TABLE_NAME_3 + "(" + COL3_1 +" INTEGER PRIMARY KEY AUTOINCREMENT,"+ COL3_2 +" INTEGER,"+ COL3_3 +" TEXT,"+ COL3_4 +" TEXT,"+ COL3_5 +" TEXT,"+ COL3_6 +" TEXT,"+ COL3_7 +" TEXT)";

        db.execSQL(createTable_1);
        db.execSQL(createTable_2);
        db.execSQL(createTable_3);

        Log.d(Database_Name, "Hello onCreate(SQLiteDatabase db) " );
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME_1);
        onCreate(db);
        Log.d(Database_Name, "Hello onUpgrade(SQLiteDatabase db, int i, int i1) " );
    }
    public boolean addData_main(String item_1,String item_2,String item_3,String item_4,String item_5) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL1_2, item_1);
        contentValues.put(COL1_3, item_2);
        contentValues.put(COL1_4, item_3);
        contentValues.put(COL1_5, item_4);
        contentValues.put(COL1_6, item_5);
        long result = db.insert(TABLE_NAME_1, null, contentValues);

        if (result == -1) {
            return false;
        }else{
            return true;
        }
    }

    public Cursor getAllData_main() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("select * from " + TABLE_NAME_1, null);
        return res;
    }
    /*
    public Cursor getData(String Col,String table_name){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT * FROM " + table_name;
        Cursor data = db.rawQuery(query, null);
        return data;
    }
    */


    public Cursor getItemID(String name){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT " + COL1_1 + " FROM " + TABLE_NAME_1 +
                " WHERE " + COL1_2 + " = '" + name + "'";
        Cursor data = db.rawQuery(query, null);
        return data;
    }

    public boolean updateName_main(String prs_nmb, String pd, String groupp,String userid,String pass){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        //contentValues.put(COL1_1,"1");
        contentValues.put(COL1_2,prs_nmb);
        contentValues.put(COL1_3,pd);
        contentValues.put(COL1_4,groupp);
        contentValues.put(COL1_5,userid);
        contentValues.put(COL1_6,pass);
        db.update(TABLE_NAME_1,contentValues,"ID = 1",null);
        return true;
    }



    public void deleteName(int id, String name){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "DELETE FROM " + TABLE_NAME_1 + " WHERE "
                + COL1_1 + " = '" + id + "'" +
                " AND " + COL1_2 + " = '" + name + "'";
        Log.d(Database_Name, "deleteName: query: " + query);
        Log.d(Database_Name, "deleteName: Deleting " + name + " from database.");
        db.execSQL(query);
    }
}


Если я не делаю 1 или 2, я получаю следующую ошибку при сборке:

Задача: app: compileDebugJavaWithJavac FAILED C: \ Users \ hwa_r \ AndroidStudioProjects \ Dias_APP \ app \ src \ main \ java \ com \ example \ dias_app \ Connection_Server.java: 27: ошибка: несовместимые типы: Connection_Server не может быть преобразован в контекст mDatabaseHelper = new Database_title (this);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...