Я пытаюсь разработать приложение для 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);