отправка запросов в БД mySQL на удаленный сервер(для начинающих)

414
14 февраля 2017, 18:30

Здравствуйте, как начинающий полезно знать ответ, чтобы двигаться дальше.

Возможно ли отправлять сообщение в таблицу mySQL на удаленном сервере, минуя локальную myDb.(Если да, то JSON нужен или нет?) И вообще где можно прочитать о самом просто коннекте, и реализации его в Android Studio.

Залью код, на всякий случай,с локальной БД. там 3 Runnable, но это всё учебное), так что не удивляйтесь. В случае удачного исхода, это будет полезно таким новичкам как я. Буду тут поэтапно обновлять код, и максимально комментировать шаги.

Ниже исходный код с операциями с локальной БД.

Main Activity

public class MainActivity extends AppCompatActivity implements View.OnClickListener  {
Button btn_add, btn_clear,btn_prochitat;
EditText txt_pole;
DBHelper dbHelper;
final String LOG_TAG = "myLogs";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn_add= (Button) findViewById(R.id.button_zapis);
    btn_add.setOnClickListener(this);
    btn_clear= (Button) findViewById(R.id.button_ochistit);
    btn_clear.setOnClickListener(this);
    btn_prochitat= (Button) findViewById(R.id.button_prochitat);
    btn_prochitat.setOnClickListener(this);
    txt_pole= (EditText) findViewById(R.id.editText);
    dbHelper = new DBHelper(this);// создаем переменную экземпляра класса
}
@Override
public void onClick(View view) {
    Thread_ADD btn_add=new Thread_ADD();
    Thread_DEL btn_clear=new Thread_DEL();
    Thread_READ btn_prochitat=new Thread_READ();
    switch (view.getId()){
        case R.id.button_zapis:
            btn_add.run();
            break;
        case R.id.button_ochistit:
            btn_clear.run();
            break;
        case R.id.button_prochitat:
            btn_prochitat.run();
            break;
    }// закрываем подключение к БД
    dbHelper.close();
}
private class Thread_ADD implements Runnable{
    // создаем объект для данных
    ContentValues cv = new ContentValues();
    // получаем данные из полей ввода
    String name = txt_pole.getText().toString();
    // подключаемся к БД
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    public void run(){
        try{
            //Закидываем в логи возможные ошибки
            // подготовим данные для вставки в виде пар: наименование столбца - значение
            cv.put("name", name);
            // вставляем запись и получаем ее ID
            long rowID = db.insert("mytable", null, cv);
            Log.d(LOG_TAG, "Всё ок, информация вставлена s potoka ADD, ID = " + rowID);
            txt_pole.setText("");
        }catch (Exception e){
            Log.d(LOG_TAG, "Ошибка, информация не вставлена с помощью потока ");
        }
    }
}
private class Thread_DEL implements Runnable{
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    public void run(){
        try{
            int clearCount = db.delete("mytable", null, null);
            Log.d(LOG_TAG, "Всё ок, информация удалена с помощью потока DEL , количество удаленных строк = " + clearCount);
        }catch (Exception e){
            Log.d(LOG_TAG, "Ошибка, инфа не удалена с помощью потока DEL ");
        }
    }
}
private class Thread_READ implements Runnable{
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    public void run(){
        try{// делаем запрос всех данных из таблицы mytable, получаем Cursor
            Cursor c = db.query("mytable", null, null, null, null, null, null);
            // ставим позицию курсора на первую строку выборки
            // если в выборке нет строк, вернется false
            if (c.moveToFirst()) {
                // определяем номера столбцов по имени в выборке
                int idColIndex = c.getColumnIndex("id");
                int nameColIndex = c.getColumnIndex("name");
                do {
                    // получаем значения по номерам столбцов и пишем все в лог
                    Log.d(LOG_TAG,
                            "ID = " + c.getInt(idColIndex) +
                                    ", name = " + c.getString(nameColIndex));
                    // переход на следующую строку
                    // а если следующей нет (текущая - последняя), то false - выходим из цикла
                } while (c.moveToNext());
            } else
                Log.d(LOG_TAG, "0 rows");
            c.close();
        }catch (Exception e){
            Log.d(LOG_TAG, "Ошибка, инфа не прочитана с помощью потока READ ");
        }
    }
}

DBHelperActivity

public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
    // конструктор суперкласса
    super(context, "myDB", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
    // создаем таблицу с полями
    db.execSQL("create table mytable ("
            + "id integer primary key autoincrement,"
            + "name text" +");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}

В инете уже продвинутые обращения с удаленными БД с синхронизациями и , я же хочу вникнуть в элементарные операции максимально поэтапно. Спасибо.

READ ALSO
Вычитывание файла с применением Singleton

Вычитывание файла с применением Singleton

Задача вычитать из конфига ключ и при необходимости использовать ключ из памяти, а не постоянно вычитывать и тратить ресурсы

354
Проблемы с коннектором java tarantool

Проблемы с коннектором java tarantool

Пытался сделать java коннектор к тарантул 172 в NetBeans, делал по мануалу с connector java for tarantool,при запуске, программа ссылается на отсутствие главного...

436