Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
#1

Подскажите где ошибка при работе с БД - Android

18.09.2014, 17:56. Просмотров 435. Ответов 3
Метки нет (Все метки)

Добый день! Пытась сделать что то наподбии справочника. Т.е. занес в БД sqlite 3 колонки (id, name, tel - айди, имя, телефон). Хочу сформировать запрос таким образом, что бы при указании имени (сейчас беру вручную, одно из имен в БД из колонки name, далее значении будет браться из поля ввода) выдавалась инфа в виде
name=Вова, tel = (его номер).

Запрос формируется через rawQuery и выглядит так:

Java
1
2
3
String sqlQuery =   "SELECT name, tel FROM mytable WHERE name = ?";
            
    c = db.rawQuery(sqlQuery, new String[] {"Вова"});
И тут выдается ошибка... При этом если я вместо
Java
1
name, tel
ставлю * - то работает, но выбивается еще и ненужны id...
В чем может быть ошибка. Весь метод вот:

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
void readtolog (Cursor c)
{
    //создаем объект dbHelper
    dbHelper = new DBHelper(this);
    
    // подключаемся к базе
    db = dbHelper.getWritableDatabase();
    
    Log.d(LOG_TAG, "--- Назначаем курсору С данные из БД —-");
    String sqlQuery =   "SELECT name, tel FROM mytable WHERE name = ?";
            
    c = db.rawQuery(sqlQuery, new String[] {"Вова"});
    
     if (c != null) {
          if (c.moveToFirst()) {
            String str;
            do {
              str = "";
              for (String cn : c.getColumnNames()) {
                str = str.concat(cn + " = " + c.getString(c.getColumnIndex(cn)) + "; ");
              }
              Log.d(LOG_TAG, str);
            } while (c.moveToNext());
          }
        } else
          Log.d(LOG_TAG, "Cursor is null");
     
    c.close();
    
    dbHelper.close();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2014, 17:56     Подскажите где ошибка при работе с БД
Посмотрите здесь:

Подскажите, где ошибка Android
Ошибка при работе с базой данных Android
Как подключиться к уже существующей sqlite, или подскажите где ошибка в коде Android
Android Ошибка при работе с сетью
Ошибка при работе с Google Maps API v2 Android
Android Русский язык при работе с бд
Ошибка при работе Android Studio Android
Basic4Android Подскажите пожалуйста пример по работе с serial; Прием, передача данных
Потоки при работе с камерой Android
Ошибка при занесении класса в папку где должны храниться с++ классы (jni) Android
Android Ошибка при работе с фрагментами
Android Подскажите где ошибка в коде (блютуз-мессенджер)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
quwy
Native x86
3084 / 1932 / 510
Регистрация: 13.02.2013
Сообщений: 6,433
18.09.2014, 18:05     Подскажите где ошибка при работе с БД #2
Цитата Сообщение от yourfanat Посмотреть сообщение
В чем может быть ошибка
Т.к. текст ошибки вы не сообщаете, то скорее всего одно из этих слов (вероятно name) зарезервировано. Попробуйте изменить имя поля или экранировать его (не помню синтаксиса SQLite, но наверняка можно).
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
18.09.2014, 18:15     Подскажите где ошибка при работе с БД #3
Цитата Сообщение от quwy Посмотреть сообщение
одно из этих слов (вероятно name) зарезервировано
Врядли, у меня все работает с name.
Меня смущает, что метод принимает курсор, а потом его инициализирует, попробуйте уже в методе делать Cursor c
Да, и ошибка какая?
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
18.09.2014, 18:49  [ТС]     Подскажите где ошибка при работе с БД #4
Заработало, не знаю в чем был глюк.... Полный код вот)
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
package com.example.first_databases;
 
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
public class MainActivity extends Activity implements OnClickListener {
 
final String LOG_TAG = "myLogs";
 
int number[] = { 1, 2, 3, 4, 5 };
String name[] = { "Андрей", "Сестра", "Лена", "Папик", "Вова" };
String tel[] = { "099-494-66-28", "099-292-03-07", "063-954-81-45", "066-986-54-34", "099-460-43-70" };
 
Button btnFunc;
EditText etFunc;
TextView textView1;
 
DBHelper dbHelper;
SQLiteDatabase db;
 
/** Called when the activity is first created. */
 
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
btnFunc = (Button) findViewById(R.id.btnFunc);
btnFunc.setOnClickListener(this);
 
etFunc = (EditText) findViewById(R.id.etFunc);
 
textView1 = (TextView) findViewById(R.id.textView1);
}
 
public void onClick(View v) {
 
// очищаем курсор
Cursor c = null;
 
// определяем нажатую кнопку
switch (v.getId()) {
// Все записи
case R.id.btnFunc:
//deletetable("mytable");
filltable();
readtolog(c);
break;
}
 
}
 
void deletetable (String mytable)
{
//создаем объект dbHelper
dbHelper = new DBHelper(this);
 
// подключаемся к базе
db = dbHelper.getWritableDatabase();
db.delete(mytable, null, null);
Log.d(LOG_TAG, "-— Таблица удалена —-");
dbHelper.close();
}
 
void filltable ()
{
//создаем объект dbHelper
dbHelper = new DBHelper(this);
 
// подключаемся к базе
db = dbHelper.getWritableDatabase();
 
ContentValues cv = new ContentValues();
 
Cursor c = db.query("mytable", null, null, null, null, null, null);
if (!c.moveToFirst())
{
//заполним таблицу
for (int i = 0; i < name.length; i++) {
cv.put("id", number[i]);
cv.put("name", name[i]);
cv.put("tel", tel[i]);
db.insert("mytable", null, cv);
}
Log.d(LOG_TAG, "-— БД заново заполнена —-");
}
 
 
 
dbHelper.close();
}
 
void readtolog (Cursor c)
{
//создаем объект dbHelper
dbHelper = new DBHelper(this);
 
// подключаемся к базе
db = dbHelper.getWritableDatabase();
 
Log.d(LOG_TAG, "-— Назначаем курсору С данные из БД —-");
//выбор всех данных БД
//c = db.query("mytable", null, null, null, null, null, null);
 
String sqlQuery = "SELECT name, tel FROM mytable WHERE name = ?";
c = db.rawQuery(sqlQuery, new String[] {"Вова"});
 
if (c != null) {
if (c.moveToFirst()) {
String str;
do {
str = "";
for (String cn : c.getColumnNames()) {
str = str.concat(cn + " = "
+ c.getString(c.getColumnIndex(cn)) + "; ");
}
Log.d(LOG_TAG, str);
 
} while (c.moveToNext());
}
c.close();
} else
Log.d(LOG_TAG, "Cursor is null");
 
dbHelper.close();
}
 
//класс БД
class DBHelper extends SQLiteOpenHelper {
 
public DBHelper(Context context) {
// конструктор суперкласса
super(context, "myDB5", null, 1);
}
 
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "-— onCreate database —-");
 
// создаем таблицу с полями
db.execSQL("create table mytable ("
+ "id integer," + "name text,"
+ "tel text" + ");");
 
}
 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
}
}
 
}
P.s. Телефоны я поменял)))
Yandex
Объявления
18.09.2014, 18:49     Подскажите где ошибка при работе с БД
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru