Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2009, 14:04   #1
balamut
Пользователь
 
Регистрация: 05.02.2009
Сообщений: 35
По умолчанию клиент сервер

Нужна самая простейшая(чтобы самому легко было разобраться) программа C#: Клиент-Сервер работа с Базой Данных;
бросьте исходный код или ссылку где посмотреть.
хочется понять принцип их создания, чтобы потом сделать что-то похожее самому, а то где я читал столько информации, что забываю написанное на первой странице, когда читаю вторую.

Последний раз редактировалось balamut; 22.10.2009 в 14:33.
balamut вне форума Ответить с цитированием
Старый 22.10.2009, 14:55   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

я бы начал сперва просто взаимодействие клиент -> сервер , а потом сервер обрабатывающий и отдающих обратно)
вот пример сервера:
Кусок программы на C# (если речь вообще идет о TCP).
by ds.Dante
Код клиента:
Код:

			TcpClient Client = null;
			NetworkStream Stream = null;

			try
			{
				Client = new TcpClient ("localhost", 80);
				Stream = Client.GetStream ();
				byte[] Buff = Encoding.ASCII.GetBytes ("qwe");


				Stream.Write (Buff, 0, Buff.Length);
				Console.WriteLine ("Sent: " + Encoding.ASCII.GetString (Buff));

				Buff = new byte[256];

				int Length = Stream.Read (Buff, 0, Buff.Length);
				Console.WriteLine ("Received: " + Encoding.ASCII.GetString (Buff));
			}
			catch (Exception exc)
			{
				Console.WriteLine (exc.Message);
			}
			finally
			{
				if (Stream != null)
					Stream.Close();
				if (Client != null)
					Client.Close();
				Console.ReadKey ();
			}
сервер:
Код:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TCPServer
{
	public static void Main ()
	{
		byte[] Buffrer = new byte [256];
		string Data = null;
		TcpListener Server = null;

		try
		{
			Server = new TcpListener (IPAddress.Parse ("127.0.0.1"), 80);
			Server.Start();

			Console.Write ("Waiting for a client...");
			TcpClient Client = Server.AcceptTcpClient();
			Console.WriteLine (" connected.");
			NetworkStream Stream = Client.GetStream();

			int RecivedLength;

			while (true)
			{
				RecivedLength = Stream.Read (Buffrer, 0, Buffrer.Length);
				if (RecivedLength == 0)
					break;
				Console.WriteLine ("Recived: " + Encoding.ASCII.GetString (Buffrer, 0, RecivedLength));
				Stream.Write (Buffrer, 0, RecivedLength);
				Console.WriteLine ("Echo sent.");
			}

			Client.Close ();
		}
		catch (SocketException exc)
		{
			Console.WriteLine ("Error: " + exc.Message);
		}
		finally
		{
			Server.Stop ();
			Console.WriteLine ("Press any key...");
			Console.ReadKey ();
		}
	}
}
dampirik вне форума Ответить с цитированием
Старый 01.11.2009, 04:43   #3
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

Архитектура разрабатываемых приложений, работающих с базами данных, правильно должна выглядить так: PL(уровень представления: WinForms) - BLL(уровень бизнес логики) - DAL(уровень доступа к данным) - DL(уровень данных: MSSQL или другая база данных).

PL - это наши формы, кнопочки, всё что видит пользователь.

BLL - DLL библиотека, работающая с DAL.dll. В её функции входят обработка данных принимаемых с базы данных и отправляемых запросов на сервер от пользователя. Библиотека играет роль связующего звена между DAL и PL. Методы в DAL в PL недоступны.

DAL - DLL библиотека, содержащая методы, работающие с базой данных:

Пример:

BaseClass - содержит ConnectionString, и всё что нужно для соединения с базой
DalClass - содержит методы для выборки данных

Namespace TableEntity - содержит классы - сущности всех таблиц в базе
Например: У нас есть таблица user, в которой есть три поля:

userName
userAddress
userPhone

Создаём класс-сущность:

public class MyBaseUser
{
public string userName {set;get;}
public string userAddress {set;get;}
public string userAddress {set;get;}
}

Тепер в DalClass можно написать метод, который возвращает список всех юзеров из базы: (Буду писать пример для MySQL)
Код:
public class DalClass : BaseClass
{

      public List<MyBaseUser> GetAllUser(ref string errorMessage)
     {
            List<MyBaseUser> result = new List<MyBaseUser>();
try
{
           OpenConnection();
           myCommand.CommandText = "SELECT * FROM user"
           myCommand.Connection = myConnection;
           MySqlDataReader dataReader = myCommand.ExecuteReader();
               
           while(dataReader.Read())
           {
               MyBaseUser item = new MyBaseUser();
               
               item.userName = dataReader.GetValue(0).ToString();
               item.userAddress = dataReader.GetValue(1).ToString();
               item.userPhone = dataReader.GetValue(2).ToString();                
               
               result.Add(item);

            }
         return result;
}
catch(Exception exc)
{
      errorMessage="Ошибка получения данных! Текст ошибки: " + exc.Message;
}
finally
{
     CloseConnection();
}

}

}
BLL метод:

Код:
public List<MyBaseUser> GetAllUserBll(ref string errorMessage)
{
      return base.GetAllUser(ref errorMessage);
}
В PL в событии нажатии кнопки пишем:

Код:
List<MyBaseUser> users = new BLL().GetAllUserBll(ref errorMessage);
Код писал прямо здесь, могут быть ошибки... но общую суть объяснил.

Данных код - чистое ADO.NET. На LINQ to SQL намного всё проще
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент и сервер SL1CK Работа с сетью в Delphi 8 27.08.2009 01:30
Сервер клиент Dr.zlo Работа с сетью в Delphi 13 15.06.2009 21:43
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
клиент-сервер Orsika2006 Общие вопросы .NET 1 29.03.2009 13:09
Клиент-сервер-клиент Кронос Работа с сетью в Delphi 3 24.08.2007 07:57