powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# DataSet
60 сообщений из 60, показаны все 3 страниц
C# DataSet
    #38273711
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

А кто скажет как можно десериализовать прямо из сокета? Или вопрос по другому - как по TCP сокетам передавать произвольный DataSet, размер которого заранее неизвестен?
вот как делаю через память:
Код: c#
1.
2.
3.
4.
5.
6.
           
 //var ms = new MemoryStream(theByteArray);
var ms = new NetworkStream(clientSocket);
            var bf1 = new BinaryFormatter();
            ms.Position = 0;
            return (DataSet)bf1.Deserialize(ms);



я уже почти близко к цели, только когда было
Код: c#
1.
2.
           
var ms = new MemoryStream(theByteArray); 

- небольшие датасеты без проблем десериализовались, а когда данных стало чутка поболее, полетели эксепшены...
вот как можно сделать так, чтобы прямо из сокета объект десериализовался? Конструкция
Код: c#
1.
 var ms = new NetworkStream(clientSocket); 

не совсем правильная, так как ожидает аргумента другого класса, а у меня clientSocket - это TcpClient
...
Рейтинг: 0 / 0
C# DataSet
    #38273713
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5 сек - одна задумка есть! - пробую!
...
Рейтинг: 0 / 0
C# DataSet
    #38273716
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
NetworkStream ms = clientSocket.GetStream();


так вот написал, но нет десериализации походу...
...
Рейтинг: 0 / 0
C# DataSet
    #38273724
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то кажется что написал некий бред, так как C# не знаю, сокетов не знаю....
...
Рейтинг: 0 / 0
C# DataSet
    #38273779
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала нужно сериализовать, затем конвертировать в byte[]/поток и только потом отправлять.
...
Рейтинг: 0 / 0
C# DataSet
    #38273804
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skoleСначала нужно сериализовать, затем конвертировать в byte[]/поток и только потом отправлять.
спасибо за информацию - я давно это сделал!

проблема в том, что если датасет небольшой - все работает как надо, а если немного больше записей - нифига не работает - чувствую, что это как-то связано с размером пакетов, или я неправильно принимаю:

Код: c#
1.
2.
3.
4.
     var ms = new MemoryStream(theByteArray);
     var bf1 = new BinaryFormatter();
     ms.Position = 0;
     return (DataSet)bf1.Deserialize(ms);
...
Рейтинг: 0 / 0
C# DataSet
    #38273807
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как десериализовать датасеты грамотно? любого размера...
...
Рейтинг: 0 / 0
C# DataSet
    #38273822
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверь размер буфера на входе NetworkStream или читай и заполняй его снова в лупе while
...
Рейтинг: 0 / 0
C# DataSet
    #38273827
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skoleПроверь размер буфера на входе NetworkStream или читай и заполняй его снова в лупе while
8192
...
Рейтинг: 0 / 0
C# DataSet
    #38273836
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а аообще грамотно как датасет десериализовать?
Код: c#
1.
2.
3.
 // Отправка table клиенту
            Stream.Write(SerializeData(ds), 0, SerializeData(ds).Length);
            Stream.Flush();



если в итоге датасет в один пакет не влезет - клиенту будет отправленое несколько пакетов? - то есть сколько бы данных ни было - они в данном случае пакетами уйдут абсолютно все, и их нужно будет читать в цикле, проверяя, есть ли данные?
то есть эта конструкция датасет целиком вытолкает в сеть?
если да, то как тогда десериализовать - где хранить промежутобайты? - если в массиве, то как заранее узнать размер массива?
вообщем я вообще ноль в C# поэтому задаю лавину наиглупейших вопросов...
может кто подскажет простой пример принятия данных заранее неизвестного размера и десериализации оного объекта?
...
Рейтинг: 0 / 0
C# DataSet
    #38273844
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, подумай, зачем тебе использовать целый датасет, это достаточно громоздкий объект со своими тараканами, используй что-нибудь попроще, какой-нибудь базовый объект, например DataTable, а лучше типизированную коллекцию, вида List<MyClass>. Затем пометь атрибутами нужные поля в случае коллекции, сериализируй, отправляй в потоке по TCP.

На сервере читай входящий поток, если он большой, складывай во временный буфер byte[], как поток будет весь принят, отправляй на десериализацию.
...
Рейтинг: 0 / 0
C# DataSet
    #38273849
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skoleВо-первых, подумай, зачем тебе использовать целый датасет, это достаточно громоздкий объект со своими тараканами, используй что-нибудь попроще, какой-нибудь базовый объект, например DataTable, а лучше типизированную коллекцию, вида List<MyClass>. Затем пометь атрибутами нужные поля в случае коллекции, сериализируй, отправляй в потоке по TCP.

На сервере читай входящий поток, если он большой, складывай во временный буфер byte[], как поток будет весь принят, отправляй на десериализацию.
все намного прозаичней - диплом делаю студенту - так там условие - клиент не знает ничего о БД, обращается к серверу (такое крохотное приложение), а сервер шлет в зависимости от того, о чем попросил клиент , запросы на сервак.... так я уже думаю - наверно проще построчно передать клиенту результат запроса - какая разница, если на клиенте нет вообще работы с БД

может так логичней будет?
...
Рейтинг: 0 / 0
C# DataSet
    #38273859
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

.. еще проще будет формировать csv-файл, да и отдавать его клиенту ...
...
Рейтинг: 0 / 0
C# DataSet
    #38273862
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikGaladriel75,

.. еще проще будет формировать csv-файл, да и отдавать его клиенту ...
тоже вариант

но опять же его нужно буддет сериализовать скорее всего

кстати вот какое исключение на больших объемах данных выбивает:

Конец потока обнаружен до завершения разбора - то есть я так понял - пришло пакетов несколько а принят только один?
вот он и недополучил данные...?
...
Рейтинг: 0 / 0
C# DataSet
    #38273873
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
csv файл не очень изящное решение, годится только для поделки.
Покажи, как читаешь NetworkStream на сервере.
...
Рейтинг: 0 / 0
C# DataSet
    #38273886
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skolecsv файл не очень изящное решение, годится только для поделки.
Покажи, как читаешь NetworkStream на сервере.
я на сервере его не читаю - я с сервака клиенту пытаюсь передать DataSet
...
Рейтинг: 0 / 0
C# DataSet
    #38273893
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75skolecsv файл не очень изящное решение, годится только для поделки.
Покажи, как читаешь NetworkStream на сервере.
я на сервере его не читаю - я с сервака клиенту пытаюсь передать DataSet
а читаю то что пришло вот как
Код: c#
1.
2.
3.
4.
 var ms = new MemoryStream(theByteArray);
            var bf1 = new BinaryFormatter();
            ms.Position = 0;
            return (DataSet)bf1.Deserialize(ms);
...
Рейтинг: 0 / 0
C# DataSet
    #38273898
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Galadriel75пропущено...

я на сервере его не читаю - я с сервака клиенту пытаюсь передать DataSet
а читаю то что пришло вот как
Код: c#
1.
2.
3.
4.
 var ms = new MemoryStream(theByteArray);
            var bf1 = new BinaryFormatter();
            ms.Position = 0;
            return (DataSet)bf1.Deserialize(ms);



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
                NetworkStream Stream = clientSocket.GetStream();
                int size = (int)clientSocket.ReceiveBufferSize;
                byte[] ReceivedBytes = new byte[size];
                //   MessageBox.Show(size.ToString());
                Stream.Read(ReceivedBytes, 0, size);
                data = DeserializeData(ReceivedBytes);
                data.WriteXml("aaa1.xml");
                dataGridView1.DataSource = data.Tables[0].DefaultView;
                Stream.Close();



выше была десериализация
а тут - чтение
и всегда size дает 8192 - чую - что здесь как то неправильно читаются данные из потока
...
Рейтинг: 0 / 0
C# DataSet
    #38273899
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Galadriel75пропущено...

а читаю то что пришло вот как
Код: c#
1.
2.
3.
4.
 var ms = new MemoryStream(theByteArray);
            var bf1 = new BinaryFormatter();
            ms.Position = 0;
            return (DataSet)bf1.Deserialize(ms);



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
                NetworkStream Stream = clientSocket.GetStream();
                int size = (int)clientSocket.ReceiveBufferSize;
                byte[] ReceivedBytes = new byte[size];
                //   MessageBox.Show(size.ToString());
                Stream.Read(ReceivedBytes, 0, size);
                data = DeserializeData(ReceivedBytes);
                data.WriteXml("aaa1.xml");
                dataGridView1.DataSource = data.Tables[0].DefaultView;
                Stream.Close();



выше была десериализация
а тут - чтение
и всегда size дает 8192 - чую - что здесь как то неправильно читаются данные из потока

вот теперь я собственно начал читать по теме
...
Рейтинг: 0 / 0
C# DataSet
    #38273902
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вижу, что я написал откровеннейшую фигню в этом методе! - уже начал читать матчасть и вроде начал осознавать сотворенный мною бред...
...
Рейтинг: 0 / 0
C# DataSet
    #38273903
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с момента начала чтения матчасти уже вдруг решил кучку проблем... проверил догоадку - увеличил размер буфера ручками - данные пришли целиком... ошибка не появилась... копаю дальше
...
Рейтинг: 0 / 0
C# DataSet
    #38273908
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно, как узнать скока пришло байт ( NetworkStream) lenght - уже not supported...
неохота заморачиваться с динамическими массивами и прочей лабудой
...
Рейтинг: 0 / 0
C# DataSet
    #38273909
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще большие стримы надо читать в лупе, посмотри MSDN, там был пример для NetworkStream.

Засвети DeserializeData(ReceivedBytes); что там делаешь, покажи
...
Рейтинг: 0 / 0
C# DataSet
    #38273915
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skoleВообще большие стримы надо читать в лупе, посмотри MSDN, там был пример для NetworkStream.

Засвети DeserializeData(ReceivedBytes); что там делаешь, покажи

Код: c#
1.
2.
3.
4.
var ms = new MemoryStream(theByteArray);
            var bf1 = new BinaryFormatter();
            ms.Position = 0;
            return (DataSet)bf1.Deserialize(ms);


туда передается массив
а есть ли способ на лету увеличивать размер массива, не юзая List<> или ArrayList?
если есть, то я знаю как прочитать из буфера ровно стока, скока прислали
...
Рейтинг: 0 / 0
C# DataSet
    #38273919
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю через List
...
Рейтинг: 0 / 0
C# DataSet
    #38273927
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот в итоге сделал так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
      private void GetAnswer()
        {
                NetworkStream Stream = clientSocket.GetStream();
                var mbyte = new List<byte>();
                byte[] buf = new byte[30];
                if (Stream.CanRead)
                {
                    int cnt = 0;
                    mbyte.Clear();
                    do
                    {
                        cnt = Stream.Read(buf, 0, buf.Length);
                        for (int i = 0; i < cnt; i++) mbyte.Add(buf[i]);
                    }
                    while (Stream.DataAvailable);
                }    
                data = DeserializeData(mbyte.ToArray());
                data.WriteXml("aaa1.xml");
                dataGridView1.DataSource = data.Tables[0].DefaultView;
                Stream.Close();
        }



и попутно кое что и узнал :)

топик можно закрывать! всем спасибо за участие, как-никак - начавши общаться в форуме я начал и думать сам, что привело к конкретному решению :)
...
Рейтинг: 0 / 0
C# DataSet
    #38273934
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Код: c#
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.
private bool StartListening()
        {
            bool result = false;
            bool anyAddress = false;

            
                IPAddress localAddr = IPAddress.Parse(IpPortList[0].ToString());
                _tcpListener = new TcpListener(localAddr, int.Parse(IpPortList[1].ToString()));

            
            try
            {
                run = true;
                _tcpListener.Start();
                connectThread = new Thread(ListenForConnection) { Name = "Listen" };
                connectThread.Start(anyAddress);

                //Logger.AppendAction("TcpListener started waiting for connection.");
                result = true;
            }
            catch (Exception e)
            {
                
                result = false;
            }

            return result;
        }

        
        private void ListenForConnection(object anyAddress)
        {
            while (run)
            {
                if (_tcpListener.Pending())
                {
                    while (run)
                    {
                        using (_tcpClient = _tcpListener.AcceptTcpClient())
                        {
                            if (_tcpClient.Connected)
                            {
                                var ipAddress = ((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Address.ToString();

                                if (TrustedIpArrayList.Contains(ipAddress) || (bool)anyAddress)
                                {
                                    #region Traffic Exchange

                                    Logger.Initialize();


                                    int bytesRead = 0;
                                    try
                                    {
                                        Logger.AppendAction("Start reading stream from TcpClient");

                                        var bytes = new byte[1024];
                                        using (_nStream = _tcpClient.GetStream())
                                        {
                                            string status = "Выполняю транзакцию";
                                            Action<string> updateStatus = (s) => tslStatus.Text = s;

                                            bytesRead = _nStream.Read(bytes, 0, 1024);
                                            var encoder = new ASCIIEncoding();
                                            string request = encoder.GetString(bytes, 0, bytesRead);
                                            string response = "Транзакция прекращена";



                                            if (request.StartsWith(SecurityKey + "|")) //SecurityKey check
                                            {
                                                string[] split = request.Split('|');
                                                string number = split[1];
                                                string amount = split[2];

                                                bool result = false;

                                                updateStatus.Invoke(status);


                                                if (OnPaymentDemand != null)
                                                {
                                                    result = OnPaymentDemand(number, amount, false, ref response);
                                                }
                                                if (!result)
                                                {
                                                    Logger.AppendAction("Call to PaymentRequest failed: " + response);
                                                }
                                                byte[] msg = encoder.GetBytes(response);
                                                _nStream.Write(msg, 0, msg.Length);


                                            }
                                            else
                                            {
                                                Logger.AppendAction("The client provided a wrong security key!");
                                                response = "Authorization failed";
                                                byte[] msg = encoder.GetBytes(response);
                                                _nStream.Write(msg, 0, msg.Length);

                                                
                                            }

                                            status = "Ожидаю соединение";
                                            updateStatus.Invoke(status);
                                        }
                                    }
                                    catch (IOException e)
                                    {
                                        //we do not catch this exception: (a client has unexpectedly disconnected)
                                        Logger.AppendAction(e.Message);
                                    }
                                    catch (Exception e)
                                    {
                                        Logger.AppendAction(string.Format("Exception: {0}", e.Message));
                                        MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }

                                    if (bytesRead == 0)
                                    {
                                        break; //a client has unexpectedly disconnected from the server
                                    }

                                    #endregion
                                }
                            }
                            else
                            {
                                //Logger.AppendAction("The trusted Ip address list doesn't contain this IP address.");
                                continue;
                            }
                        }

                        Thread.Sleep(50); //To reduce consuming system resources while loop
                    }
                }

                Thread.Sleep(50); //To reduce consuming system resources while loop
            }
        }



...
Рейтинг: 0 / 0
C# DataSet
    #38273935
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри, как это делаю я
...
Рейтинг: 0 / 0
C# DataSet
    #38273939
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь кидаю все в строку, но у меня запрос маленький, правильный код здесь, загляни сюда NetworkStream.Read Method
...
Рейтинг: 0 / 0
C# DataSet
    #38273950
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

... вообще говоря, поступающий буфер можно писать пакетами в MemoryStream(), который потом (по окончании записи) сохранить в массив ... Не забыть только Position перевести в "0" ..
...
Рейтинг: 0 / 0
C# DataSet
    #38273981
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
while (Stream.DataAvailable);

это ошибка.
...
Рейтинг: 0 / 0
C# DataSet
    #38274001
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skoleПосмотри, как это делаю я
гляну спасибо!
...
Рейтинг: 0 / 0
C# DataSet
    #38274002
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikGaladriel75,

... вообще говоря, поступающий буфер можно писать пакетами в MemoryStream(), который потом (по окончании записи) сохранить в массив ... Не забыть только Position перевести в "0" ..

уау тоже вариант!
...
Рейтинг: 0 / 0
C# DataSet
    #38274003
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
Код: c#
1.
while (Stream.DataAvailable);

это ошибка.
но это работает и даже взято с сайта msdn
и почему ошибка то???
...
Рейтинг: 0 / 0
C# DataSet
    #38274015
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот же C# пакостник:
Код: c#
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.
  private void button2_Click(object sender, EventArgs e)
        {
            FormDataEdit fDataEdit = new FormDataEdit();
            fDataEdit.ToDo = "+";
            if (_TableName == "Banks")
               fDataEdit.Objects = "-TB~:id;+TB':Name;+TB':Address;+TB':Fax;+TB':Phones;+TB':ContactTo";
            
            if (_TableName == "SprContrAgents")
                fDataEdit.Objects = "-TB:id;+TB:Name;+CB:Bank_ID;+TB:RS;+TB:Address;+TB:Fax;+TB:Phones;+TB:ContactTo";
     

            fDataEdit.Labels = ColsNames;
            fDataEdit.ShowDialog();
          //  MessageBox.Show(fDataEdit.fSQL_Insert);
          //  MessageBox.Show(fDataEdit.fSQL_Update);
         
                if (fDataEdit.ToDo == "+")
                {
                    if(Connect())
                    {
                        SendCmd(_CMD_APPEND + ";" + _TableName + ";" + fDataEdit.fSQL_Insert);
                        GetAnswer();
                        clientSocket.Close();
                    }
                }
                fDataEdit.Dispose();
        }



изначально я создал объект FormDataEdit fDataEdit = new FormDataEdit(); создал тока один раз и не трогал его.
- доверил уборщику мусора - то есть открываем наше окно - оно создает наш объект - внутри того объекта создаются контролы инициализируются - юзер вводит в них текст все ок.
я вот думал - объект уже существует, у объекта есть FormLoad где все прописано и расписано что сделать!
а делается там вот что - динамически создаются TextBox - целая куча! юзер в них вводит текст и нажимает на кнопку
форма прячется (не убивается) - все ок! заходим второй раз - думал ну вот форма же есть - она уже СОЗДАНА и в первый раз отработала нормально!
во второй раз делаем тоже самое, но ничего не отрабатывает - чтобы пользователь ни вводил в TextBoxes - у них всегда свойство Text остается пустым! а по сути что сделали - открыли ранее созданный объект второй раз - только и всего
думал вот же засада очередная... все решилось просто - когда надо объект только тогда его и создаем, попользовались - убиваем!
тогда все заработало нормально!
...
Рейтинг: 0 / 0
C# DataSet
    #38274024
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75но это работает и даже взято с сайта msdn
и почему ошибка то???

отсутствие данных для чтения не означает, что отправляющая сторона завершила передачу.
Внимательно читайте что делает пример в МСДН
...
Рейтинг: 0 / 0
C# DataSet
    #38274332
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75но это работает и даже взято с сайта msdn
и почему ошибка то???

отсутствие данных для чтения не означает, что отправляющая сторона завершила передачу.
Внимательно читайте что делает пример в МСДН
там дополнительно идет проверка на возможность чтения из потока.... я делаю курсач - это не особо критично, так как прога еще ни разу не слетела... думаю все сделаю, тогда можно будет обернуть метод такой же проверкой, так опять же нкжно будет если вдруг окажется что поток нечитабельный, какие-то меры принимать... пожалуй, это не промышленная задача - я даже не уверен, что кто-то будет в исходник заглядывать вообще... и будут ли ее вообще запускать....
...
Рейтинг: 0 / 0
C# DataSet
    #38274427
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75я делаю курсач - это не особо критично,
Критично.
...
Рейтинг: 0 / 0
C# DataSet
    #38274453
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75я делаю курсач - это не особо критично,
Критично.
вот когда за курсач будут платить от 100 баксов, тогда это и будет критично, а по теперешней цене - не критично :)
...
Рейтинг: 0 / 0
C# DataSet
    #38274495
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

разруха.
...
Рейтинг: 0 / 0
C# DataSet
    #38274528
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,
авторвсе намного прозаичней - диплом делаю студенту - так там условие - клиент не знает ничего о БД, обращается к серверу (такое крохотное приложение), а сервер шлет в зависимости от того, о чем попросил клиент
Дак это чья инициатива, посадить многозвенку на сокеты, препода или Ваша??
...
Рейтинг: 0 / 0
C# DataSet
    #38274653
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиGaladriel75,
авторвсе намного прозаичней - диплом делаю студенту - так там условие - клиент не знает ничего о БД, обращается к серверу (такое крохотное приложение), а сервер шлет в зависимости от того, о чем попросил клиент
Дак это чья инициатива, посадить многозвенку на сокеты, препода или Ваша??

оооо, конечно препода (в плане просто трехзвенки)! мне зачем гемор? - я бы сваял даже при моем низком уровне опыта в C# прожку по работе с БД за два-три часа если бы по обычному - клиент-сервер (СУБД)!
только я все еще не уверен что именно на сокетах все делается, но тем не менее я уже сделал и немного боюсь, если с сокетами не угадал :)
...
Рейтинг: 0 / 0
C# DataSet
    #38274673
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75я уже сделал и немного боюсь, если с сокетами не угадал :)
можно и на сокетах, но технологичнее было бы на WCF
...
Рейтинг: 0 / 0
C# DataSet
    #38274676
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75я уже сделал и немного боюсь, если с сокетами не угадал :)
можно и на сокетах, но технологичнее было бы на WCF

оу.... WCF еще ж поизучать надо, а на сокетах я ранее и на Java все успешно делал :)
...
Рейтинг: 0 / 0
C# DataSet
    #38274680
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос чуть не в тему:
Код: c#
1.
2.
 CurrencyManager cmgr = (CurrencyManager)this.dataGridView1.BindingContext[this.dataGridView1.DataSource];
                DataRow row = ((DataRowView)cmgr.Current).Row;



как из данного row в цикле повытягивать значения всех полей???
...
Рейтинг: 0 / 0
C# DataSet
    #38274684
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75я ранее и на Java все успешно делал :)
в Java есть и высокоуровневые средства удалённого взаимодействия
...
Рейтинг: 0 / 0
C# DataSet
    #38274690
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75как из данного row в цикле повытягивать значения всех полей???
их нужно вытягивать не из пользовательского интерфейса, а из источника данных
...
Рейтинг: 0 / 0
C# DataSet
    #38274700
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75как из данного row в цикле повытягивать значения всех полей???
их нужно вытягивать не из пользовательского интерфейса, а из источника данных
именно оттуда и вытягивается - не из грида а из источника

string _id = row["Код"].ToString(); - вытянет из поля которое было вот как получено SELECT Id AS [Код]... FROM ... ORDER BY Name

а как в цикле получить значения всех полей записи???
...
Рейтинг: 0 / 0
C# DataSet
    #38274706
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о а что если строковый индекс заменить на переменную i
...
Рейтинг: 0 / 0
C# DataSet
    #38274714
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75о а что если строковый индекс заменить на переменную i

гы сработало!!!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
if (fDataEdit.ToDo == "*")
            {
                CurrencyManager cmgr = (CurrencyManager)this.dataGridView1.BindingContext[this.dataGridView1.DataSource];
                DataRow row = ((DataRowView)cmgr.Current).Row;
                for (int i=0;i < row.Table.Columns.Count-1;i++)
                fDataEdit.Values += row[i].ToString();
                MessageBox.Show(fDataEdit.Values);
                fDataEdit.ShowDialog();
                if (Connect())
                {
                    SendCmd(_CMD_UPDATE + ";" + _TableName + ";" + fDataEdit.fSQL_Update);
                    GetAnswer();
                    clientSocket.Close();
                }
            }
...
Рейтинг: 0 / 0
C# DataSet
    #38274850
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,
авторнемного боюсь, если с сокетами не угадал
а вы не бойтесь, вы не угадали, сокеты тут вообще не приделах, краеугольный камень http://msdn.microsoft.com/en-us/library/ms731082.aspx wcf для всех приложений типа вашего, вместо того что бы работать в парадигме ОПП и пользоваться прокси
вас почему то потянуло на сокеты, вы посмотрите сколько времени вы убили на передачу и прием, а ведь еще до логики не добрались
а такие фитчи: аутентификация, криптование, атка повтором, запертость файрволом .... и еще 20 - 30 фитч вам создавать и создавать. хотя все готовое бери и пользуйся, пока не поздно переделайте по людски ( 99,99 процентов так и делают) - это от силы займет 15 - 20 минут не больше, ну и почитать минут 30 -40..
...
Рейтинг: 0 / 0
C# DataSet
    #38274873
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиGaladriel75,
авторнемного боюсь, если с сокетами не угадал
а вы не бойтесь, вы не угадали, сокеты тут вообще не приделах, краеугольный камень http://msdn.microsoft.com/en-us/library/ms731082.aspx wcf для всех приложений типа вашего, вместо того что бы работать в парадигме ОПП и пользоваться прокси
вас почему то потянуло на сокеты, вы посмотрите сколько времени вы убили на передачу и прием, а ведь еще до логики не добрались
а такие фитчи: аутентификация, криптование, атка повтором, запертость файрволом .... и еще 20 - 30 фитч вам создавать и создавать. хотя все готовое бери и пользуйся, пока не поздно переделайте по людски ( 99,99 процентов так и делают) - это от силы займет 15 - 20 минут не больше, ну и почитать минут 30 -40..
я си шарп еле еле чуть чуть знаю... изучать не было времени WCF я за работу взялся только потому, что не сразу увидел условие - думал что обычный клиент сервер нарисовать надо... с WCF потом разберусь
...
Рейтинг: 0 / 0
C# DataSet
    #38274896
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

сокеты - тож полезное упражнение
...
Рейтинг: 0 / 0
C# DataSet
    #38274904
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,
WCF если сравнивать с сокетами, это на два порядка легче, а самое главное верное, тут ведь дело ваше, я почему спросил,
у меня в мозгу стрельнуло, - препод принудил к сокетам - ( бред какой то). а ответственность за правильностью решения - это полностью на Вас, как грится взялся за гуж - не говори что не дюж..)), вам и перед заказчиком отвечать.., и обосновать правильность выбора технологии (тут как правило не прокатывает - что мало знаю)
зы Я бы вообще датасет конвертировал в хмл да слал на почту, - чем не решение- самое простое..
...
Рейтинг: 0 / 0
C# DataSet
    #38274927
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилГде-то в степи,

сокеты - тож полезное упражнение
чем оно полезное - 70 процентов программистов на диезе даже за всю свою жись с ними не столкнутся в чистом виде.
сишники да , а не диезе это узко специализированя тематика, да и оберток написано дофига..
...
Рейтинг: 0 / 0
C# DataSet
    #38274986
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиИзопропилГде-то в степи,

сокеты - тож полезное упражнение
чем оно полезное - 70 процентов программистов на диезе даже за всю свою жись с ними не столкнутся в чистом виде.
сишники да , а не диезе это узко специализированя тематика, да и оберток написано дофига..

.. кстати, изучая в свое время вопрос почтовых веб-клиентов, где сокеты бы понадобились, обнаружил что на си-шарп/вб.нет их ничтожно мало по сравнению с РНР ...
...
Рейтинг: 0 / 0
C# DataSet
    #38274994
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikкстати, изучая в свое время вопрос почтовых веб-клиентов, где сокеты бы понадобились, обнаружил что на си-шарп/вб.нет их ничтожно мало по сравнению с РНР ...
что значит "мало"?
...
Рейтинг: 0 / 0
C# DataSet
    #38275005
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилcarrotikкстати, изучая в свое время вопрос почтовых веб-клиентов, где сокеты бы понадобились, обнаружил что на си-шарп/вб.нет их ничтожно мало по сравнению с РНР ...
что значит "мало"?

...вероятно, четыре-пять по сравнению с 40-50 на РНР ...
...
Рейтинг: 0 / 0
C# DataSet
    #38275029
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik...вероятно, четыре-пять по сравнению с 40-50 на РНР ...
пришлите нам вашей травы...
...
Рейтинг: 0 / 0
C# DataSet
    #38277686
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиGaladriel75,
WCF если сравнивать с сокетами, это на два порядка легче, а самое главное верное, тут ведь дело ваше, я почему спросил,
у меня в мозгу стрельнуло, - препод принудил к сокетам - ( бред какой то). а ответственность за правильностью решения - это полностью на Вас, как грится взялся за гуж - не говори что не дюж..)), вам и перед заказчиком отвечать.., и обосновать правильность выбора технологии (тут как правило не прокатывает - что мало знаю)
зы Я бы вообще датасет конвертировал в хмл да слал на почту, - чем не решение- самое простое..
датасет отправить клиенту через почтовый ящик??
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]