Урок 34. Хранение данных. SQLite

Обсуждение уроков
Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 21 апр 2014, 20:21

Принцип понятен, но в логе не нашел Caused by. Буду искать дальше, явно что то не то делаю. Но в общем спс.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 21 апр 2014, 20:32

да дело не в Caused by. Адрес в своей программе в логе ищите
at ru.puls. .... туда жми
А то так ты будешь искать ошибку месяцами
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 21 апр 2014, 20:42

Я сначало подумал о тебе плохо. Забираю свои слова и спс за помощь в понимании логов.

Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 21 апр 2014, 20:54

Вот что получилось

строка в логе
at ru.pu1s.accounting.New_product.onClick(New_product.java:98)

отсылает на строку в коде:
"Id = " + c.getString(idColIndex) +

сам код был выложен в первом моем посте. Если не сложно. объясни что данная ошибка означает?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 21 апр 2014, 21:01

ну теперь переводим ошибку.
"Не могу читать строку 0 колонку -1 из курсора, который имеет 3 строки и 5 колонок"
это значит, что у тебя в переменной idColindex чета не то записано...
поднимаемся выше, где определяется это самое idColindex
int idColIndex = c.getColumnIndex("Id");
значит тут что-то не то...
И отформатируй код. Некрасиво так и неуважительно к тем, кто пытается тебе помочь.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 21 апр 2014, 21:41

В еклипсе отформатирован, это при вставке сюда он не форматируется. Но все равно сори, в след раз исправлюсь.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 21 апр 2014, 22:22

внизу кнопка "редактор"
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 21 апр 2014, 23:14

а еще возник вопрос. Как очистить поля для ввода (EditView). т.е. ввели в поля текст, сохранили его в базе и чтоб не стирать все по очереди, нажали кнопку "Очистить поля" и они пустые?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 34. Хранение данных. SQLite

Сообщение klblk » 22 апр 2014, 06:43

setText("")?

Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 27 апр 2014, 12:04

Я дико извиняюсь, но задам сейчас вопрос. Не сочтите его совсем за тупость.

Так вот, хочу создать приложение, что то типа складского учета. В данной программе все манипуляции будут проходить с одной лишь таблицей, списком товаров (у каждого товара конечно будет куча всяких столбцов с данными (в общем одна табличка)). Так вот вопрос в том, лучше все хранить в БД или есть другой способ сохранность данной таблицы?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 27 апр 2014, 12:17

в бд, и одной табличкой там не обойтись.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Pu1s
Сообщения: 16
Зарегистрирован: 21 апр 2014, 02:08

Re: Урок 34. Хранение данных. SQLite

Сообщение Pu1s » 27 апр 2014, 12:43

Значит будем БД ковырять.

polev
Сообщения: 8
Зарегистрирован: 08 мар 2014, 17:42

Re: Урок 34. Хранение данных. SQLite

Сообщение polev » 09 май 2014, 10:09

Если мое приложение использует базу данных в нескольких активити, как создать одно подключение к базе, которое я смогу использовать с любого места? Сейчас я создаю и закрываю подключение к базе в каждом новом активити, но понимаю, что это не есть хорошо.

Аватара пользователя
Leeroy
Сообщения: 67
Зарегистрирован: 12 дек 2013, 21:25

Re: Урок 34. Хранение данных. SQLite

Сообщение Leeroy » 09 май 2014, 19:57

polev писал(а):Если мое приложение использует базу данных в нескольких активити, как создать одно подключение к базе, которое я смогу использовать с любого места? Сейчас я создаю и закрываю подключение к базе в каждом новом активити, но понимаю, что это не есть хорошо.
Вынеси реализацию SQLiteOpenHelper в отдельный класс
Или используй static
или ContentProvider....
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма

igorexa
Сообщения: 1
Зарегистрирован: 18 май 2014, 21:00

Re: Урок 34. Хранение данных. SQLite

Сообщение igorexa » 18 май 2014, 21:06

Добрый времени суток, спасибо за уроки))).
У меня такой вопрос, я создал таблицу
db.execSQL("create table segment ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "one integer,"
+ "two integer,"
+ "time text"
+ ");");
теперь мне нужно брать от туда значения с условием, а условие такое что например name = onesegment
c = db.query("segment", null, null, null, null, null, null); <--- что и куда нужно сюда поставить и потом тоже с таким же условием все от туда удалить где name = onesegment. Спасибо заранее))

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 18 май 2014, 21:18

все это есть в уроках.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

volk864
Сообщения: 1
Зарегистрирован: 20 май 2014, 06:43

Re: Урок 34. Хранение данных. SQLite

Сообщение volk864 » 20 май 2014, 06:47

Добрый день. Подскажите пожалуйста, где достать Context если хочу подключится к БД из другого класса, не связанного с активити только одним методом. Сейчас реши эту проблему передавая этому методу в параметры адрес на объект активити, но можно ли обойтись без этого?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 20 май 2014, 10:47

передавай в этот класс в конструктор какой-нибудь контекст.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

scherlokholmes88
Сообщения: 3
Зарегистрирован: 22 июн 2014, 07:46

Re: Урок 34. Хранение данных. SQLite

Сообщение scherlokholmes88 » 22 июн 2014, 08:38

Помогите пожалуйста. Я новичек в Android. БД SQLite до установки приложения хранится в assets. Я так понимаю что существуют варианты хранения изображений: интернет, SD-карта. У меня 3 вопроса. 1)Есть возможность хранения изображений в drawable? 2)Как доставать несколько изображений из пути, прописанного в одном столбце из таблицы БД SQLite при хранении их в assets,drawable(если это возможно),SD-карты? 3)Куда копировать изображения и как их потом отображать в ListView вместе с двумя строками(поля из той же таблицы в SQLite) (одна строка listView содержит ImageView и два textView)? Я думаю, что это будет очень полезно всем новичкам.

Код активити таблицы блюд.В качестве теста отображатся названия блюд в списке.

Код: Выделить всё

package com.scherlokholmes.manekineko;

import java.util.ArrayList;

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.scherlokholmes.dbhelper.ExternalDbOpenHelper;

public class DishesActivity extends ListActivity {

	private static final String DB_NAME = "manekineko_rus.sqlite3";
    
	private SQLiteDatabase database;
	private ListView listView;
	private ArrayList<String> NamesDisches;
	
	String text_from_category = "textaa";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dishes);
		
		TextView txtInfo = (TextView)findViewById(R.id.text_dishes);
		
		text_from_category = getIntent().getExtras().getString("text_from_category");
		txtInfo.setText(text_from_category);
		
		//
        ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
        database = dbOpenHelper.openDataBase();
        
        //
        fillNamesDishes();
        setUpList();
	}

	private void fillNamesDishes() {
		NamesDisches = new ArrayList<String>();
		String[] selectionArgs={text_from_category};
		Cursor DishesNamesCursor = database.query
					("Dishes as DIS inner join Category as CAT on DIS.id_category=CAT._id",
						new String[] {"DIS.name", "DIS.cost","DIS.weight","DIS.image",
								"DIS.quantity","DIS.description"},
						"CAT.name=?", 
						selectionArgs, 
						null, 
						null, 
						null);
		DishesNamesCursor.moveToFirst();
		if(!DishesNamesCursor.isAfterLast()) {
			do {
				String name = DishesNamesCursor.getString(0);
				NamesDisches.add(name);
			} while (DishesNamesCursor.moveToNext());
		}
		DishesNamesCursor.close();
	}
	
	private void setUpList() {
		//
		setListAdapter(new ArrayAdapter<String>(this,
						android.R.layout.simple_list_item_1, NamesDisches));
		listView = getListView();
		
		//
		listView.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick
			(AdapterView<?> parent, 
					View view,
					int position,
					long id) 
			{
				Toast.makeText(getApplicationContext(),
						((TextView) view).getText().toString(),
							 Toast.LENGTH_SHORT).show();
				//Intent intent=new Intent(CategoryActivity.this,DishesActivity.class);
				//intent.putExtra("text_from_category", ((TextView) view).getText().toString());
				//startActivity(intent);
			}
		});
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.dishes, menu);
		return true;
	}

}
Код экрана списка блюд

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back_other"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:gravity="center">

        <TextView
            android:id="@+id/text_dishes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:text="any text"
            android:textSize="20sp" 
            android:textStyle="bold"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:orientation="vertical" >

        <ListView
            android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </ListView>

    </LinearLayout>

</LinearLayout>
Вложения
Скриншот таблицы базы данных.
Скриншот таблицы базы данных.
Снимок.JPG (116.9 КБ) 9815 просмотров

du_m
Сообщения: 1
Зарегистрирован: 15 июл 2014, 13:28

Re: Урок 34. Хранение данных. SQLite

Сообщение du_m » 15 июл 2014, 14:49

Прошу прощения если такой вопрос уже задовался
Как вывести данные определенного объекта, если я имею его номер id из sqlite?

Ответить