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

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

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

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

18.09.2014, 17:56. Просмотров 445. Ответов 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
Добрый вечер Нарыл в интернете: создание блютуз-мессенджера, решил попробовать (недавно начал осваивать android studio и язык java,...

Ошибка при работе с фрагментами - Программирование Android
Soory if it's unapproprite here, but I do not know what to do. I have just finished my first lesson. Error inflating class fragment--this...

Ошибка при работе с сетью - Программирование Android
Всем привет, в ходе разработки возникла такая проблема: есть приложение отправляющее введенные строки на сервер(написан на java,...

Ошибка при работе с сетью - Программирование Android
Нужна помощь в поиске ошибки. При запуске приложение сразу закрывается. Код MainActivity package com.example.nestro.dut_rozklad; ...

Ошибка при работе с JSON - Программирование Android
база на локальном сервере, если переходить по URL в браузере все выводит...андроид - нет вот така от ошибка... даже добавить нечего ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
quwy
Native x86
3134 / 1982 / 528
Регистрация: 13.02.2013
Сообщений: 6,633
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
Да, и ошибка какая?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2014, 18:49     Подскажите где ошибка при работе с БД
Еще ссылки по теме:

Ошибка при работе с галереей в android 6 - Программирование Android
Здравствуйте, мне нужно получить физический путь к файлу из галереи, этот код отлично работает до андройда 6 if (resultCode ==...

Ошибка при работе Android Studio - Программирование Android
Вот такая ошибка выходит после запуска Android Studio 1.3.1 И почему не нажимается Run в программе?

Ошибка при работе с базой данных - Программирование Android
скажите почему ошибка при этих строках: sqdb.insert(sms.TABLE_NAME1, sms.NAME1, cv); sqdb.execSQL("CREATE TABLE " +...

Ошибка при работе с Google Maps API v2 - Программирование Android
Добрый день. голову сломал уже есть примитивный код: public class MainActivity extends Activity implements ...

Как подключиться к уже существующей sqlite, или подскажите где ошибка в коде - Программирование Android
Привет! Есть mysql3.sqlite (импортировал данные из csv). Нужно из приложения подключится к sqlite БД и вывести данные в log. Нашел пример...

Подскажите по работе с SQLite - Программирование Android
Идея такова: есть приложение под андройд, в какой-то момент пользователь нажимает, например, "добавить человека", вводит фио, дату рождения...


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

Или воспользуйтесь поиском по форуму:
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