Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 ASP.NET, бази данни и дървовидни структури
  1. Въведение
  2. Основни обекти на ADO.NET
  3. Да започнем с базата данни
  4. Намиране на поддървото
  5. Пълния сорс код
     
Автор  futureweb (02.01.2005 19:05)  съобщение до автора
Погледнат  6271 пъти  добави към любими
Оценка  добави коментар
Гласове  18  изпрати на приятел
Коментари  (3)  абонирай се за ASP
    Страница 3 / 5

 



Да започнем с базата данни. Тя съдържа само една таблица на име "tblTree". Таблицата съдържа 3 колони:

   1) IdClient - уникален номер, първичен ключ, идентифициращ даден клиент.

   2) IdParent - указател, сочещ кой IdClient е родител на текущия клиент. Това е стандартният начин за обозначение на възли при дървовидно представяне на данни.

   3) Other - тази колона съдържа незадължителни допълнителни данни за клиента и е сложена само заради примера. Все пак необходимо е да знаем малко данни за клиентите, с които работим!

   При тази организация на данните, със стандартне функционален език лесно можем да намерим родителя на даден възел, но по-трудно се намират наследниците му, защото нямаме пряк указател, сочещ наследниците. Въпреки това, използвайки синтаксиса на SQL, можем да сведем задачата за намиране на пълно поддърво спрямо начален възел до линеен лагоритъм!!! Нещо, което е невъзможно, ако използваме C++ например!

   Нека видим малко код:

   На глобално ниво създаваме обект за връзка към базата данни, както и 2 низови променливи, в които ще пазим низът за връзка и динамично генерираните SQL заявки:

CODE
1
2
3
4

  private OleDbConnection connection= new OleDbConnection();
 
private string ConnectionString = String.Empty;
 
private string SQL = String.Empty;

   В събитието Page_Load имаме следния код:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

   // Обявяване на доставчик на данни
 
ConnectionString = @"Provider='Microsoft.Jet.OLEDB.4.0';Data Source='";

 
// Указване на пътя до базата данни
 
ConnectionString += Server.MapPath("db/treedb.mdb");

 
// Указване на ниво на защита
 
ConnectionString += "';persist security info=False";

 
connection.ConnectionString = ConnectionString;   

 
// Отваряме връзката
 
connection.Open();

  
// Намираме клиентите на следващото ниво
   
FillNextLevel();

  
// Намираме Пълно поддърво спрямо указания възел
   
FillSubTree();
 
connection.Close();

   Намирането на клиентите не е интересно, това преставлява проста SQL заявка от рода на:

CODE
1
2

  SELECT * FROM tblTree WHERE IdParent = 1

   Все пак нека проследим процеса, за да видим какво става:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

  // Динамично се създава SQL заявката
 
SQL = String.Format("SELECT * FROM tblTree WHERE IdParent = {0}", txtStartNode.Text.Trim());       

 
// Създаваме обект-посредник м-у базата данни и приложението
 
OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, connection);
 
 
// Създаваме нов обект, в който ще запишем извлечените записи
 
DataSet ds = new DataSet();
           
 
// Запълваме "DataSet" обекта с необходимите данни
 
adapter.Fill(ds, "tblFinalTree");

 
// "Посочваме" откъде "grdNextLevel" да вземе данните
 
grdNextLevel.DataSource = ds.Tables["tblFinalTree"].DefaultView;
 
 
// Реалната точка на запълване на данните
 
grdNextLevel.DataBind();

   Коментарите говорят сами за себе си! Единственото, което трябва да се уточни е, че в реда, в който запълваме DataSet обекта с данни, ние "преименуваме" оригиналното име на таблицата и даваме новото име "tblFinalTree". Тази допълнителна гъвкавост е от значение, защото така се създава абстракция спрямо базата данни, която използваме.



 << Предишна страница Следваща страница >> 


Ключови думи: asp бази данни ms sql server


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: futureweb  
Иван Давидов е професионален програмист, специализирал в разработката на интернет базирани приложения. Работи като програмист във фирма "Tumbleweed Communications" гр. София. Ivan Deyanov Davidov davidov.i[[a.t]]gmail[[d.o.t]]com Tel: +359 889 357 125
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

"using System.Data.OleDb;    // За MS-SQL базирани системи"

Е за MS Access предполагам от пастването е стнала грешката

  Filip_n на 19.02.2008 10:58

Скрипта иначе е готин упсях да си го едитна за visual studio 2005 

  ritch на 27.04.2007 12:07

Исках да попитам от каде мога да намеря базата данни която е използвана ?

  ritch на 27.04.2007 12:05

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008