Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 57

Поиск по базе SQLite

26.04.2018, 21:53. Показов 1547. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! С SQLite работаю в первый раз ,никак не могу разобраться.Суть кода:при нажатии на кнопку идет выборка из SQLite бд ,если такой записи нет , то создать ее с таким то id и значением в другом столбце, если полученное значение равно 0 ,то обновить запись и установить вместо нуля единицу , иначе ноль вместо единицы. Собственно вот код(смотреть в листенер нажатия кнопки):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
package com.example.root.mystory;
 
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
 
public class article_view extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
public String id;
    public DBHelper dbHelper;
    public Button like_btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_article_view);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        Intent i = getIntent();
        id = i.getStringExtra("id");
        dbHelper = new DBHelper(article_view.this);
        final SQLiteDatabase database = dbHelper.getWritableDatabase();
        final ContentValues cv = new ContentValues();
 
        TextGet tx =new TextGet();
        tx.execute();
        like_btn = (Button) findViewById(R.id.like_btn);
       like_btn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               updateLikes upl = new updateLikes();
        Cursor cursor = database.rawQuery("SELECT " + DBHelper.KEY_STATE + " FROM "+DBHelper.TABLE_LIKE+ " WHERE "+DBHelper.KEY_LIKE_ID +"="+id,null);
        cursor.moveToFirst();
               int ids = cursor.getInt(cursor.getColumnIndex(DBHelper.KEY_STATE));
               if (cursor == null){
                   cv.put(DBHelper.KEY_LIKE_ID, id);
                   cv.put(DBHelper.KEY_STATE, 1);
 
                   upl.execute();
                   database.insert(DBHelper.TABLE_LIKE,null,cv);
               }else if (ids == 0){
                   database.execSQL("UPDATE " + DBHelper.KEY_LIKE_ID + " SET " + DBHelper.KEY_STATE + " = 1 WHERE "+DBHelper.KEY_LIKE_ID+"="+id);
                   upl.execute();
               }else if(ids == 1){
                   dislike ds = new dislike();
                   ds.execute();
                   database.execSQL("UPDATE " + DBHelper.KEY_LIKE_ID + " SET " + DBHelper.KEY_STATE + " = 0 WHERE "+DBHelper.KEY_LIKE_ID+"="+id);
               }
           }
       });
 
    }
 
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.article_view, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();
 
        if (id == R.id.allstory) {
            Intent i = new Intent(this , MainActivity.class);
            startActivity(i);
        } else if (id == R.id.job) {
            Intent i = new Intent(this , job.class);
            startActivity(i);
        } else if (id == R.id.hobby) {
            Intent i = new Intent(this , hobby.class);
            startActivity(i);
        } else if (id == R.id.child) {
            Intent i = new Intent(this ,child.class);
            startActivity(i);
        } else if (id == R.id.sex) {
            Intent i = new Intent(this ,sex.class);
            startActivity(i);
        } else if (id == R.id.blackstory) {
            Intent i = new Intent(this ,blackstory.class);
            startActivity(i);
        }else if (id == R.id.fail) {
            Intent i = new Intent(this ,fail.class);
            startActivity(i);
        }else if (id == R.id.animals) {
            Intent i = new Intent(this ,animals.class);
            startActivity(i);
        }else if (id == R.id.alk) {
            Intent i = new Intent(this ,alk.class);
            startActivity(i);
        }else if (id == R.id.addmy) {
            Intent i = new Intent(this ,addstory.class);
            startActivity(i);
        }else if (id == R.id.mystr) {
            Intent i = new Intent(this ,mystories.class);
            startActivity(i);
        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
    class TextGet extends AsyncTask<Void,Integer,Void>{
        public Document doc;
        public String json_text;
        public String text_str;
        public String views;
        public String likes;
        public TextView tv;
        public TextView view_tv;
        public Document doc2;
        public TextView like_tv;
        public void onPreExecute(){
 
        }
        @Override
        protected Void doInBackground(Void... params) {
            publishProgress(1);
            try {
                doc = Jsoup.connect("https://mystoryapp.000webhostapp.com/swipe_all.php?id="+id).get();
                doc2 = Jsoup.connect("https://mystoryapp.000webhostapp.com/viewsupdate.php?id="+id).get();
                json_text = doc.title();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                JSONObject json = new JSONObject(json_text);
                text_str = json.getString("text");
                views = json.getString("views");
                likes = json.getString("likes");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            publishProgress(2);
            return null;
        }
        public void onPostExecute(Void result){
            super.onPostExecute(result);
            tv = (TextView) findViewById(R.id.story_text);
            view_tv = (TextView) findViewById(R.id.view);
            like_tv = (TextView) findViewById(R.id.like);
            view_tv.setText(views);
            like_tv.setText(likes);
             tv.setText(text_str);
 
        }
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            if(values[0] == 1){
                Toast.makeText(article_view.this, "Загрузка", Toast.LENGTH_SHORT).show();
            }else if(values[0]==2){
                Toast.makeText(article_view.this,"Загрузка завершена",Toast.LENGTH_SHORT).show();
            }
        }
    }
    class updateLikes extends AsyncTask<Void,Void,Void>{
        public Document doc;
        @Override
        protected Void doInBackground(Void... params) {
            try {
                doc = Jsoup.connect("https://mystoryapp.000webhostapp.com/likeupdate.php?id="+id).get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    class dislike extends AsyncTask<Void,Void,Void>{
        public Document doc;
        @Override
        protected Void doInBackground(Void... params) {
            try {
                doc = Jsoup.connect("https://mystoryapp.000webhostapp.com/dislike.php?id="+id).get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    class DBHelper extends SQLiteOpenHelper {
        public static final int DATABASE_VERSION =1;
        public static final String DATABASE_NAME = "likes";
        public static final String TABLE_LIKE = "like_state";
        public static final String KEY_LIKE_ID = "_id";
        public static final String KEY_STATE = "state";
        public DBHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
           db.execSQL("create table " + TABLE_LIKE + "(" +KEY_LIKE_ID + " integer primary key,"+KEY_STATE + "integer"+")");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         db.execSQL("drop table if exists " + TABLE_LIKE);
            onCreate(db);
        }
    }
}
Сокращенный исходник(для тех кому лень искать):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Intent i = getIntent();
        id = i.getStringExtra("id");
        dbHelper = new DBHelper(article_view.this);
        final SQLiteDatabase database = dbHelper.getWritableDatabase();
        final ContentValues cv = new ContentValues();
 
        TextGet tx =new TextGet();
        tx.execute();
        like_btn = (Button) findViewById(R.id.like_btn);
       like_btn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               updateLikes upl = new updateLikes();
        Cursor cursor = database.rawQuery("SELECT " + DBHelper.KEY_STATE + " FROM "+DBHelper.TABLE_LIKE+ " WHERE "+DBHelper.KEY_LIKE_ID +"="+id,null);
        cursor.moveToFirst();
               int ids = cursor.getInt(cursor.getColumnIndex(DBHelper.KEY_STATE));
               if (cursor == null){
                   cv.put(DBHelper.KEY_LIKE_ID, id);
                   cv.put(DBHelper.KEY_STATE, 1);
 
                   upl.execute();
                   database.insert(DBHelper.TABLE_LIKE,null,cv);
               }else if (ids == 0){
                   database.execSQL("UPDATE " + DBHelper.KEY_LIKE_ID + " SET " + DBHelper.KEY_STATE + " = 1 WHERE "+DBHelper.KEY_LIKE_ID+"="+id);
                   upl.execute();
               }else if(ids == 1){
                   dislike ds = new dislike();
                   ds.execute();
                   database.execSQL("UPDATE " + DBHelper.KEY_LIKE_ID + " SET " + DBHelper.KEY_STATE + " = 0 WHERE "+DBHelper.KEY_LIKE_ID+"="+id);
               }
           }
       });
Извиняюсь за г*вно код, кхм кхм , плохой код )

Добавлено через 2 минуты
Забыл, ошибок нет,приложение просто вылетает

Добавлено через 39 секунд
Или переходит в МайнАктивити
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2018, 21:53
Ответы с готовыми решениями:

Searchview. Поиск по базе SQLite
Здравствуйте. Не могу разобраться с этим поиском. Хотя бы один рабочий пример. То, что я находил - не запускалось в моей среде разработки....

Поиск уникальных элементов в базе SQLite
Здравствуйте. Вот у меня имеется такой вот код: cursor = mDb.rawQuery(&quot;SELECT * FROM имя_таблицы where поле_таблицы = ?&quot;, new...

Пример запроса к базе sqlite
Подскажите пример запроса к базе с условием WHERE.

5
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
26.04.2018, 23:48
Цитата Сообщение от kashichishi Посмотреть сообщение
ошибок нет,приложение просто вылетает
Это ложное утверждение, если есть вылет - есть ошибка, которая находится в логе.
0
1 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 57
29.04.2018, 01:13  [ТС]
В логе ошибок нет
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
29.04.2018, 01:29
Значит и вылета нет.
1
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
29.04.2018, 23:48
Цитата Сообщение от kashichishi Посмотреть сообщение
В логе ошибок нет
На каком устройстве вы тестируете? Некоторые китайцы действительно не выводят лог, т.к. он отключен в настройках самого аппарата.

Добавлено через 52 секунды
Вы дебажили свой код?
0
1 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 57
02.05.2018, 19:44  [ТС]
Meizu m5c
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2018, 19:44
Помогаю со студенческими работами здесь

Обновление ListView при изменении значений в базе SQLite
Доброго времени суток господа. У меня такой вопрос. Как лучше сделать обновление данных в ArrayList,а так же занесение данных в базу?? ...

Есть ли какое-нибудь приложение (IDE) писать запросы к SQLite базе устройства?
Знаю 2 способа посмотреть что лежит в файле базы данных sqlite приложения: Вытащить файл через Android Device Monitor и открыть...

Qt и SQLite. Поиск в базе данных
Привет всем!!!Пишу программку.Работаю с SQite.Надкнулся на проблемку.Осуществляю поиск имен из базы данных.Я в лайнэдите пишу первые буквы...

Поиск в базе данных SQLite
Здравствуйте! Подскажите пожалуйста. Создаю программу для рассылки почты по заказчикам. Интересует как вытаскивать данные напрямую из базы...

Поиск по базе данных Sqlite
Здравствуйте, возникла следующая проблема - не могу реализовать поиск по базе данных, чтобы в lineEdit вводить значения и последующее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru