Помош: SQL и останати бази на податоци

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Ај неколку прашања и од мене поврзи со MySQL и десктоп апликација... се надевам дека поискусните би знаеле соодветно решение...

1. Иако во апликацијата нема никакви трансакции, само внес на податоци во база и читање од неа... како би била „вистинската шема“ на кодот...

Код:
Отварање на конекцијата
Извршување Query-ја/функции
Затварање на конекцијата
или пак...

Код:
Отварање на конекцијата
Креирање бекап на податоците
Извршување на Query-ја/Функции
Затварање на конекцијата
...или пак можеби нешто сосем трето ?
Значи целта е заштита на податоците во базата.


2. На кој принцип е наједноставно да се изврши креирање на базата и нејзината структура ?

- .php скрипта.
- Код во самата апликација кој ќе се изврши само во првото стартување на апликацијата.
- Креирањето да се изврши при самата инсталација на аплиакацијата.

...или пак нешто сосем друго ?
Можеби прашањево е глупо и смешно, али стварно немам никаква идеа како наједноставно би се извело сето тоа имајки во предвид дека апликацијата не е наменета за фирма или слично, туку за да ја користи било кој...

Се надевам дека ме разбравте што сакам да кажам и благодарам однапред :smir:
 
Член од
13 јули 2006
Мислења
15.455
Поени од реакции
18.456
Ај неколку прашања и од мене поврзи со MySQL и десктоп апликација... се надевам дека поискусните би знаеле соодветно решение...

1. Иако во апликацијата нема никакви трансакции, само внес на податоци во база и читање од неа... како би била „вистинската шема“ на кодот...

Код:
Отварање на конекцијата
Извршување Query-ја/функции
Затварање на конекцијата
или пак...

Код:
Отварање на конекцијата
Креирање бекап на податоците
Извршување на Query-ја/Функции
Затварање на конекцијата
...или пак можеби нешто сосем трето ?
Значи целта е заштита на податоците во базата.


2. На кој принцип е наједноставно да се изврши креирање на базата и нејзината структура ?

- .php скрипта.
- Код во самата апликација кој ќе се изврши само во првото стартување на апликацијата.
- Креирањето да се изврши при самата инсталација на аплиакацијата.

...или пак нешто сосем друго ?
Можеби прашањево е глупо и смешно, али стварно немам никаква идеа како наједноставно би се извело сето тоа имајки во предвид дека апликацијата не е наменета за фирма или слично, туку за да ја користи било кој...

Се надевам дека ме разбравте што сакам да кажам и благодарам однапред :smir:
Клучната работа е дали да користиш InnoDB или MyISAM табели.

InnoDB табели имаат транскации, а MyISAM немаат.

Но, сеуште за web користам во главно MyISAM табели затоа што се многу помали во простор и побрзи од соодветните во InnoDB.

Ако е во прашање заштита на податоците, тогаш нема дилема мора да користиш трансакации.

Конекција
почеток на трансакација
кверина
крај на трансакација
Конекција
Бакап во главно си правам со MySQL администратор.

За десктоп апликација ќе го конфигурираш MySQL серверот секој ден или пократко на сати, да прави BackUp и тоа е тоа, ти треба да го снимаш некаде тој .sql фајл.

За web апликација најдобро е да имаш некоj експорт во XML фајл, и корисниците да си ги прават на одредено време или уште подобро со Cron да си прави апликацијата сама backup и да го праќа на одреден емаил. Вака парави Wordpress, па ме бендиса и јас си ја користам таа идеја.



Креирањето на табелите го правам за време на инсталација на апликацијата со по две кверина за секоја табела:

DROP TABLE IF EXISTS `articles`;
CREATE TABLE `articles` (
`idarticle` int(10) unsigned NOT NULL AUTO_INCREMENT,
`dummy` varchar(45) NOT NULL DEFAULT '', PRIMARY KEY (`idarticle`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Најпрвин благодарам за одговорот... Иначе табелите ми се MyISAM, а главниот проблем ми е тоа што се работи за десктоп апликација наменета да може да ја користи секој без разлика дали има или нема познавање од MySQL... Да беше Web апликација (моја претпоставка) полесно ќе поминев. :/

Иначе се работи за нова верзија на оваа апликација (Овојпат пишувана во C++ со MySQL база на податоци и со повеќе опции) и малце нелогички ми е за таква апликација да имплементирам некаков бекап систем :toe:

Изгледа наједноставно решение со кое најлесно би поминал е да ја сменам базата на податоци :toe:
 

MkForces

тантара пантара
Член од
25 јануари 2007
Мислења
600
Поени од реакции
19
Најпрвин благодарам за одговорот... Иначе табелите ми се MyISAM, а главниот проблем ми е тоа што се работи за десктоп апликација наменета да може да ја користи секој без разлика дали има или нема познавање од MySQL... Да беше Web апликација (моја претпоставка) полесно ќе поминев. :/

Иначе се работи за нова верзија на оваа апликација (Овојпат пишувана во C++ со MySQL база на податоци и со повеќе опции) и малце нелогички ми е за таква апликација да имплементирам некаков бекап систем :toe:

Изгледа наједноставно решение со кое најлесно би поминал е да ја сменам базата на податоци :toe:
Ако е десктоп апликација, а не сакаш да се оптеретуваш со инсталирање на цели сервери и слично, користи sqlite.
SQLite is a in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private.
SQLite is an embedded SQL database engine. Unlike most other SQL databases, SQLite does not have a separate server process. SQLite reads and writes directly to ordinary disk files. A complete SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file.
Немам искуство со овој тип на база на податоци, али знам дека е згодна за десктоп апликации кои немаат потреба од multi-user употреба.
 
P

Princ

Гостин
Внимавај само, препорачано е додека се прави бекап на база на податоци да биде исклучен mysql серверот за да избегнеш коруптирање на базата на податоци. Доколку во момент додека се прави бекап, се врши и запишување во базата на податоци... многу веројатно е дека на крај ќе имаш коруптиран бекап. А коруптиран бекап не е бекап.
Мислам дека со crontab најлесно ќе ти биде да го автоматизираш процесот. Во зависност од тоа колку податоци си спремен да загубиш и релативно да ги прежалиш, толку често (нека) прави бекап.
 
Член од
13 јули 2006
Мислења
15.455
Поени од реакции
18.456
Најпрвин благодарам за одговорот... Иначе табелите ми се MyISAM, а главниот проблем ми е тоа што се работи за десктоп апликација наменета да може да ја користи секој без разлика дали има или нема познавање од MySQL... Да беше Web апликација (моја претпоставка) полесно ќе поминев. :/

Иначе се работи за нова верзија на оваа апликација (Овојпат пишувана во C++ со MySQL база на податоци и со повеќе опции) и малце нелогички ми е за таква апликација да имплементирам некаков бекап систем :toe:

Изгледа наједноставно решение со кое најлесно би поминал е да ја сменам базата на податоци :toe:
Не ти треба MySQL за ваков тип на програма, Access от е солиден, SQLite такуѓере.

Внимавај само, препорачано е додека се прави бекап на база на податоци да биде исклучен mysql серверот за да избегнеш коруптирање на базата на податоци. Доколку во момент додека се прави бекап, се врши и запишување во базата на податоци... многу веројатно е дека на крај ќе имаш коруптиран бекап. А коруптиран бекап не е бекап.
Мислам дека со crontab најлесно ќе ти биде да го автоматизираш процесот. Во зависност од тоа колку податоци си спремен да загубиш и релативно да ги прежалиш, толку често (нека) прави бекап.
Ќе си подесиш Lock All Tables за МyISAM и backup in single transaction за ИнноДБ и нема проблем, ништо не губиш, ниту еден ред.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Тенеке... и тука јавно да ти заблагодарам за одговорите на прашањата :smir:

Иначе имам едно прашање... значи во базата имам табела и една од колоните ми е со Тype TEXT и сега, запишувам податоци во базата преку програмот што го правам, податоците се запишуваат, но кај колоните со Type VARCHAR текстот во базата го прикажува нормално, а текстот во колоната со Type TEXT го прикажува пола текст пола хиероглифи... Ова се дешава само доколку правам преглед во базата, а ако читам податоци од базата преку програмот кој што го правам, текстот од сите колони си испаѓа најнормален онака како што сум го внесол...

Дали ова е нормална појава или... ?

П.С. Во програмот немам никакви енкриптации кои би предизвикале таква појава :toe:

Едит: Collation ми е utf8_general_ci, а фонтот со кој запишувам податоци е Tahoma, Times New Roman или Microsoft Sans Serif, нема нит кирилица нит некакви симболи, обичен текст.
 
Член од
1 август 2007
Мислења
89
Поени од реакции
5
Имам администрација во PHP . Пред да се влезе ке има полиња за логирање. Работата е што само еден јузер ке постои кој ке се логира. Побезбедно ке биде јузерот и лозинката во mysql база да бидат ставени и од таму да ги чита, или дирекно во php страницата да споредува стрингови ?
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Имам администрација во PHP . Пред да се влезе ке има полиња за логирање. Работата е што само еден јузер ке постои кој ке се логира. Побезбедно ке биде јузерот и лозинката во mysql база да бидат ставени и од таму да ги чита, или дирекно во php страницата да споредува стрингови ?
Најбезбедно би било да направиш твоја енкриптација. Во тој случај никој не би можел да ти ги открие јузерот и лозинката, а без енкриптација незнам... во секој случај ако бараш безбедност ќе ти треба енкриптација барем на лозинката. :toe:
 

The One

Оној шо ќутит а све знајт
Член од
16 март 2008
Мислења
189
Поени од реакции
39
За сто се користи data adapter ?
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
За сто се користи data adapter ?
Дата адаптерот ти овозможува комуникација помеѓу DataSet и базата на податоци.

Пример:

Код:
SqlCommand SQLQuery = new SqlCommand();
DataTable data = null;
dataGridView1.DataSource = null;
SQLQuery.Connection = null;
SqlDataAdapter dataAdapter = null;
SQLQuery.CommandText = sqlQueryString; // пример да речеме дека sqlQueryString = "select * from myTable";
SQLQuery.Connection = database; // database е конекцијата со базата
data = new DataTable();
dataAdapter = new SqlDataAdapter(SQLQuery);
dataAdapter.Fill(data); // data е табелата и ќе биде исполнета според командниот текст од sqlQueryString
dataGridView1.DataSource = data;
Разгледај го кодов мислам дека од прилика ќе го разбереш (можда има синтаксички грешки дека на памет го пишував, али од прилика тоа е тоа).

Иначе за подетално разгелдај ја DataAdapter класата.
 

The_Dzo

FIELD MARSHAL
Член од
3 февруари 2007
Мислења
256
Поени од реакции
2
вака сега, ми треба некое програмце во кое ке треба да се внесатт неколку параметри и кое ке мозе да формира датотека, дали некој знае како се прави.
 
Член од
5 август 2009
Мислења
1.295
Поени од реакции
484
вака сега, ми треба некое програмце во кое ке треба да се внесатт неколку параметри и кое ке мозе да формира датотека, дали некој знае како се прави.
Notepad :)
 

The One

Оној шо ќутит а све знајт
Член од
16 март 2008
Мислења
189
Поени од реакции
39
Фала SkyDriver за одговорот и за линкот.
 
Член од
2 август 2009
Мислења
975
Поени од реакции
380
ај кажете каде да најдам нешто за записи-records треба да направам презентација
фала однапред
 

Kajgana Shop

На врв Bottom