Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как преобрзовать объект в строку? Без урезания до 255 символов? 
V
    Опции темы
remal
Дата 1.11.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.10.2008

Репутация: нет
Всего: нет



Вобщем такая ситуация. Беру из базы данных из поля мемо текст (длинна его значительно больше чем 255 символов) 
Код

rdr.Read();
(rdr.GetValue(0));


Мне его нужно поместить в richTextBox (напрямую он естественно не хочет)
Код

richTextBox.Text = (rdr.GetValue(0));


А если преобразовывать в строку, то урезает до 255 символов, что есть совсем не гуд
Код

richTextBox.Text = (rdr.GetValue(0).toString());


И такой вариант тоже урезает
Код

richTextBox.Text = (rdr.GetString(0));


Че делать то, братцы? Как его заставить выдать все содержимое в текстбокс?
PM MAIL   Вверх
mihryak
Дата 1.11.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



а ты уверен, что это не база обрезает при записи? посмотри какими-нибудь вьюерами содержимое таблицы
пс. что за база, кстати?
PM MAIL ICQ   Вверх
archeg
Дата 2.11.2008, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Цитата(mihryak @ 1.11.2008,  23:54)
а ты уверен, что это не база обрезает при записи? посмотри какими-нибудь вьюерами содержимое таблицы
пс. что за база, кстати?

Access. Автор уже в другом топике спрашивал. Я не особо работал с ексесом, там Memo случаем не CLOB?


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
remal
Дата 5.11.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.10.2008

Репутация: нет
Всего: нет



База dbf, в самой базе ниче не обрезается, смотрел вьювером.
PM MAIL   Вверх
MasterOfCode
Дата 5.11.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Может дело в Текстбоксе, поставте текстбоксу свойство Мультилайн в тру. Или попробуйте вывести в другой контрол. Или сохраните в файл. И тогда определите кто именно шкодит, датаридер, текст бокс или БД. smile


--------------------
user posted image
PM ICQ   Вверх
remal
Дата 5.11.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.10.2008

Репутация: нет
Всего: нет



Не, дело именно в преобразовании в строку (ToString), как я понял, потому что я уже проверил во всех возможных контролах, и к тому же вывод даже из поля типа Character все-равно обрезается, даже не знаю как с этой бедой справиться.
PM MAIL   Вверх
MasterOfCode
Дата 5.11.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



К чему такая уверенность, вы проверяли в дебаге что возвращает эта строка:
Код

rdr.GetValue(0);



--------------------
user posted image
PM ICQ   Вверх
archeg
Дата 5.11.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Код и базу в студию


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
Dims
Дата 5.11.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



Мысли вслух.

База данных, как правило, как раз и имеет ограничение в 255 символов на строку. Если символов больше, то поле должно быть полем Мемо, оно может содержать сколько угодно символов, причём первые 255 будут храниться прямо в записи, а остальные -- в отдельном ресурсе. 

Поскольку поле Мемо может содержать гигабайты данных, то и читать его, наверное, надо не через преобразование в строку, а через создание отдельного потока. То есть, я бы поискал соответствующие для этого методы.

Вероятно, когда Вы делаете ToString, система полагает, что Вам нужна именно строка, то есть, НЕ МЕМО. И потому обрезает.
PM MAIL   Вверх
remal
Дата 5.11.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.10.2008

Репутация: нет
Всего: нет



Вот код, тут правда консольная версия, но сути дела это не меняет, даже в консоли режет беспощадно

Код

/*
 * Created by SharpDevelop.
 * User: Верстка
 * Date: 05.11.2008
 * Time: 10:15
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;

namespace cons1
{
    class Program
    {
        public static void Main(string[] args)
        {
            // TODO: Implement Functionality Here
            
            OleDbConnection cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\dbf\\;Extended Properties=dBASE IV;User ID=Admin;Password=");
           //OleDbConnection cnn = new OleDbConnection();
           //cnn.ConnectionString = strCnn;
           cnn.Open();
            
           
          OleDbCommand cmd = new OleDbCommand();
           cmd.Connection = cnn;
      
           string strCmd = "SELECT DISTINCT OLE FROM data WHERE NAME LIKE '%123%'";
           cmd.CommandText = strCmd;
           cmd.CommandType = CommandType.Text;

           OleDbDataReader rdr = cmd.ExecuteReader();
        
           rdr.Read();
        
         Console.Write(rdr.GetValue(0));
         
        
           rdr.Close();
           cnn.Close();
           Console.ReadKey();
        }
    }
}


База в приаттаченом файле

Вопрос к Dims, а вы что-нибудь подобное проделывали? Если возможно код для примера? Спасибо.

Это сообщение отредактировал(а) remal - 5.11.2008, 15:04

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  data.dbf 3,12 Kb
PM MAIL   Вверх
Dims
Дата 5.11.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



Сейчас нет времени искать решение. Помню, что с таким сталкивался, совсем в другой задаче и на другом языке. И вспоминаю свои мысли на этот счёт.

Если конкретнее, то сейчас посмотрел хелп и думаю, что надо попробовать использовать метод GetData, а не GetValue.
PM MAIL   Вверх
remal
Дата 6.11.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.10.2008

Репутация: нет
Всего: нет



Всем спасибо, решение оказалось проще чем мы все предполагали, вот при такой конструкции выдает все замечательно

Код

(string)rdr["Имя поля"];


Это сообщение отредактировал(а) remal - 6.11.2008, 16:40
PM MAIL   Вверх
Bogdan1024
Дата 6.11.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



remal, интереса ради, скажи пожалуйста что возвращает эта функция:
Код

rdr["Имя поля"].GetType().FullName

и
Код

rdr.GetValue(0).GetType().FullName

Бо мне почему-то кажется что это одни и те же классы.
Нэ панимаю.


--------------------
user posted image
PM MAIL   Вверх
remal
Дата 7.11.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.10.2008

Репутация: нет
Всего: нет



как ни странно оба возвращают System.String

сам не пойму в чем тут фишка, на решение чисто случайно наткнулся, когда уже отчаялся и решил писать для мускула  smile 

Это сообщение отредактировал(а) remal - 7.11.2008, 15:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0848 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.