Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
215 / 215 / 20
Регистрация: 18.05.2010
Сообщений: 865
1

Работа со столбцами Text и Image

30.10.2010, 01:20. Показов 1611. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В MSSQL-Server 2008 Express есть таблица и процедурка вот такая
SQL
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
CREATE TABLE person(
    PersonId INT IDENTITY NOT NULL,
    PersonName CHAR(35) NOT NULL,
    PersonDateBirth datetime NOT NULL,
    PersonBiografy text NOT NULL,
    PersonPhoto image NOT NULL,
    CONSTRAINT PersonPrimaryKey PRIMARY KEY clustered(
    PersonId),
    CONSTRAINT PersonUnique UNIQUE(
    PersonName,
    PersonDateBirth))
 
GO
 
ALTER PROCEDURE PersonProcess
@PersonId INT output,
@PersonName CHAR(35) output,
@PersonDateBirth datetime output,
@PersonBiografy text,
@PersonPhoto image,
@KodOper tinyint
AS
IF @KodOper=1
  BEGIN
    INSERT INTO Person(
           PersonName,
           PersonDateBirth,
           PersonBiografy,
           PersonPhoto) VALUES(
           ltrim(rtrim(@PersonName)),
           @PersonDateBirth,
           @PersonBiografy,
           @PersonPhoto)
    SET @PersonId=@@IDENTITY
  END
в программе я зиписываю эти данные и они записываются но вот прочитать поле PersonPhoto (хотя я та записал просто текст) типа image посмтреть не удается вот собственно код
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
        private void buttonInsert_Click(object sender, EventArgs e)
        {
            SqlCommand procPersonProcess = new SqlCommand("PersonProcess", mainConn);
            procPersonProcess.CommandType = CommandType.StoredProcedure;
            procPersonProcess.Parameters.Add(new SqlParameter("@PersonId", SqlDbType.Int, 0, ParameterDirection.InputOutput, false, 0, 0, null, DataRowVersion.Default, 0));
            procPersonProcess.Parameters.Add(new SqlParameter("@PersonName", SqlDbType.Char, 35, ParameterDirection.InputOutput, false, 0, 0, null, DataRowVersion.Default, null));
            procPersonProcess.Parameters.Add(new SqlParameter("@PersonDateBirth", SqlDbType.DateTime, 0, ParameterDirection.InputOutput, false, 0, 0, null, DataRowVersion.Default, null));
            procPersonProcess.Parameters.Add(new SqlParameter("@PersonBiografy", SqlDbType.Text, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Default, null));
            procPersonProcess.Parameters.Add(new SqlParameter("@PersonPhoto", SqlDbType.Image, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Default, null));
            procPersonProcess.Parameters.Add(new SqlParameter("@KodOper", SqlDbType.TinyInt, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Default, null));
            procPersonProcess.Parameters["@PersonName"].SqlValue = this.textBoxPersonName.Text.Trim();
            procPersonProcess.Parameters["@PersonDateBirth"].SqlValue = Convert.ToDateTime(this.maskedTextBoxPersonDateBirth.Text);
            procPersonProcess.Parameters["@PersonBiografy"].SqlValue = textBoxPersonBiografy.Text;
            procPersonProcess.Parameters["@PersonPhoto"].SqlValue = Encoding.Default.GetBytes(textBoxPersonPhoto.Text);
            procPersonProcess.Parameters["@KodOper"].SqlValue = 1;
            procPersonProcess.ExecuteNonQuery();
        }
 
        private void buttonRefresh_Click(object sender, EventArgs e)
        {
            using (SqlDataReader readerPerson = (new SqlCommand("select * from Person", mainConn)).ExecuteReader())
            {
                while (readerPerson.Read())
                {
                    Console.WriteLine("{0},{1},{2},{3},{4}", readerPerson["PersonId"], readerPerson["PersonName"], readerPerson["PersonDateBirth"], readerPerson["PersonBiografy"], readerPerson["PersonPhoto"]);
                }
            }
        }
Данные выводятся кроме поле PersonPhoto вместо него пишется System.Byte[]. понятно что он считал последоватеьност байтов. Как мне преобразовать из Object в byte[]?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2010, 01:20
Ответы с готовыми решениями:

Intent (image+text)
Здравствуйте. Можно ли в одном Intent'e передать картинку с текстом?

результат выборки из БД: rs.next(); String text=rs.getString('text'); <input type=text name=name value=<%=text%>>
Возникла проблема в текстовое поле надо вывести результат выборки из БД rs.next(); String...

Как лучше сделать совмещение image + text?
хочется загрузить в Java Frame картинку и поверх ее написать текст (название программы). всю эту...

Работа со столбцами
Доброго времени суток. У меня есть большая таблица, у которой ячейки первой строки являются...

2
burning1ife
1462 / 1284 / 293
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
30.10.2010, 01:44 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
Image imageToConvert //картинка
byte[] Ret; 
 
try 
{ 
 
using (MemoryStream ms = new MemoryStream()) 
{ 
imageToConvert.Save(ms,formatOfImage); 
Ret = ms.ToArray(); 
} 
} 
catch (Exception) { throw;}
0
215 / 215 / 20
Регистрация: 18.05.2010
Сообщений: 865
30.10.2010, 11:36  [ТС] 3
kenny69, Что то не совсем понятно, точнее ничего не понятно. У меня поле БД типа Image и получаю я доступ к нему из SqlDataReader => переменная readerPerson вот участок кода
C#
1
2
3
4
5
6
7
using (SqlDataReader readerPerson = (new SqlCommand("select * from Person", mainConn)).ExecuteReader())
            {
                while (readerPerson.Read())
                {
                    Console.WriteLine(readerPerson["PersonPhoto"]);
                }
            }
В полу я записал последовательность байтов. Запись прошла но как получить обратнь не знаю. точнее сказать как преобразовать из типа object в byte[].
Код
                    byte[] b = { 1, 2, 3, 4, 5 };
                    object o = b;
                    byte[] ob; // как получить переменные из (o) в (ob)
Добавлено через 55 минут
Все разобрался. Надо таким же путем и обратно преобразовать. Наверное всера ночью уже мозги не работали но если кому интересно то вот код как записывать и получать данные при работе с полем типом Image в БД MSSQL-Server
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SqlConnection sqlConn = new SqlConnection("data source=HostName;initial catalog=DataBaseName;persist security info=true;user=UserName;pwd=password");
SqlCommand someProc = new SqlCommand("procNameInDB", mainConn);
someProc.CommandType = CommandType.StoredProcedure;
someProc.Parameters.Add(new SqlParameter("@ParamName", SqlDbType.Image, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Default, null));
byte[] b = Encoding.Default.GetBytes("Строка которая будет преобразована в массив байтов");
someProc.Parameters["@ParamName"].SqlValue = b; // присвоить параметре массив байтов
int ReturnValue = someProc.ExecuteNonQuery(); //запуск процедуры и запись байтов в поле Image
using (SqlDataReader dr = (new SqlCommand("select * from someTable")).ExecuteReader())
{
    while (dr.Read())
    {
         byte[] ob = (byte[])dr["FieldImage"];
         string s = Encoding.Default.GetString(ob);
         Console.WriteLine(s);
     }
}
0
30.10.2010, 11:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2010, 11:36
Помогаю со студенческими работами здесь

Работа со столбцами
Привет! Подскажите пожалуйста. У меня есть массив из 5 столбцов (01234), я рассчитываю среднее...

text-indent: с отрицательными значениями при использовании background-image.
Всем привет, вопрос таков: Насколько хорошей практикой является указание отрицательного значения в...

Работа со столбцами в матрице
Помогите составить программу каторая упорядочит столбцы матрицы B(4,4) по убыванию. Зараннее...

Работа со столбцами в datagridview
Срочно нужна помощь....Облазила все форумы ,но так ответа и не нашла, поэтому решила обратиться к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru