pranay1988 Ответов: 1

Я написал следующий код для хранения изображений в БД SQL server 2008


I have written a following code to store images in sql server 2008 db, but this code throw an exception of  "object reference not set to an instance of an object"


Что я уже пробовал:

создать таблицу DemoTable
(
id int primary key identity (1,1),
que изображение,
изображения параметр1 ,
изображения параметр2 ,
изображения параметр3 ,
изображение opt4,
Анс варчар (100),
sub varchar(100)
)

===========================
&ЛТ;%@ заголовок страницы="" язык="C#" и masterpagefile вместе="~/админ/AdminMaster.мастер" AutoEventWireup значение=значение"true" CodeFile="изображений.aspx-файл.КС" наследует="Admin_images" %&ГТ;

&ЛТ;АСП:контента ID="Content1" атрибутом ContentPlaceHolderID="объекту contentplaceholder1" атрибут runat="сервер"и GT;

< script language= "javascript">

функция ShowpImagePreview1 (вход) {
if (input.файлы & amp; & amp; входные данные.файлы[0]) {
var reader = новый файловый редактор();
reader.onload = функция (e) {
$('#imgque').буква attr('Url_изображения', электронная.цель.результат);
}
читатель.readAsDataURL(вход.файлы[0]);

}
}
< / script>


&ЛТ;как ASP:scriptmanager при ИД="ScriptManager1" атрибут runat="сервер"и GT;

<asp:UpdatePanel ID= "UpdatePanel1" runat= "server">
< contenttemplate>

Предмет


&ЛТ;как ASP:dropdownlist с ИД="ddlsub" атрибут runat="сервер" CssClass="форма контроля"и GT;







Вопрос

&ЛТ;как ASP:fileupload с ИД="fuque" атрибут runat="сервер" CssClass="форма контроля" /&ГТ;








Вариант 1

&ЛТ;как ASP:fileupload с ИД="fuopt1" атрибут runat="сервер" CssClass="форма контроля" /&ГТ;









Вариант 2

&ЛТ;как ASP:fileupload с ИД="fuopt2" атрибут runat="сервер" CssClass="форма контроля" /&ГТ;










Вариант 3

&ЛТ;как ASP:fileupload с ИД="fuopt3" атрибут runat="сервер" CssClass="форма контроля" /&ГТ;








Вариант 4

&ЛТ;как ASP:fileupload с ИД="fuopt4" атрибут runat="сервер" CssClass="форма контроля" /&ГТ;








Ответ

&ЛТ;как ASP:dropdownlist с ИД="ddlopt" атрибут runat="сервер" CssClass="форма контроля"и GT;
< asp:ListItem & gt;opt1
< asp:ListItem & gt;opt2
< asp:ListItem & gt;opt3
< asp:ListItem & gt;opt4











<asp: Button ID= "btnsubmit" runat=" server "Text=" Submit"
onclick= "btnsubmit_Click" />

&ЛТ;АСП:метка идентификатор="lblmsg" атрибут runat="сервер"и GT;










============

использование системы;
использование системы.Коллекции.Общий;
использование System. Linq;
использование системы.Сеть;
используя системы.Веб.ИП;
используя системы.Веб.Пользовательского интерфейса.WebControls;
использование системы.Конфигурация;
используя системы.Сведения;
используя системы.Данных.Поставщики sqlclient;
использование системы.ИО;

общественный разделяемого класса Admin_images : система.Веб.Пользовательского интерфейса.Страницы
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings ["Con1"].Метод toString());
SqlCommand com;
DataSet ds = новый набор данных();
Адаптер SqlDataAdapter;
Читатель SqlDataReader;

общественного недействительными подключения()
{
против.Закрывать();
if (con. State == ConnectionState.Закрытый)
{
против.Открыть();
}
}

общественного недействительными закрыт()
{
if (con. State == ConnectionState.Открыть)
{
против.Закрывать();
}
}


protected void Page_Load(отправитель объекта, EventArgs e)
{
пробовать
{
LoadSubject();
}
поймать (исключение РП)
{
Ответ.Перенаправление (er. сообщение);
}
}

общественного недействительными LoadSubject()
{
пробовать
{
Select sel = новый выбор();
DataSet subds = sel.SubjectDistinct();
if (subds.Таблицы[0].Строк.Граф > 0)
{
ddlsub.DataSource = subds.Таблицы[0];
ddlsub.DataTextField = " тема";
ddlsub.DataValueField = " тема";
ddlsub.Привязку();
}

}
поймать (исключение РП)
{
Ответ.Написать (Эр. сообщение);
}
}

общественная int addimg(байт[] кы,байт[] параметр1,байт[] параметр2,байт[] параметр3,байт[] opt4,строку ANS,замена и)
{
int a;
Подключить();
ком = новая команда sqlcommand("вставить в DemoTable ([кы],[параметр1],[параметр2],[параметр3],[opt4],[Анс],[суб]) значения(@ке,@параметр1,@параметр2,@параметр3,@opt4,@Анс@суб)", кон);
ком.Параметры.AddWithValue ("@que", que);
ком.Параметры.AddWithValue("@параметр1", параметр1);
ком.Параметры.AddWithValue("@параметр2", параметр2);
ком.Параметры.AddWithValue ("@opt3", opt3);
ком.Параметры.AddWithValue ("@opt4", opt4);
ком.Параметры.AddWithValue ("@ans", ans);
ком.Параметры.AddWithValue ("@sub", sub);
a = com.Метод executenonquery();
Закрытый();
вернуть;
бросить новое исключение notimplementedexception();
}



охраняемых недействительными btnupload_Click(объект отправителя, EventArgs в электронной)
{
пробовать
{


}
поймать (исключение РП)
{
Ответ.Написать (Эр. сообщение);
}


}
охраняемых недействительными btnsubmit_Click(объект отправителя, EventArgs в электронной)
{
пробовать
{

// Stream fq = fuque.PostedFile.Входной поток;
//BinaryReader br = новый BinaryReader(fq);
//Byte[] rawq = br. ReadBytes ((Int32)fq. Length);

//Поток Ф1 = fuque.PostedFile.Входной поток;
//BinaryReader br1 = новый BinaryReader(f1);
//Байт[] raw1 = спальня1.ReadBytes((int32)для Ф1.Длина);

// Поток f2 = fuque.PostedFile.Входной поток;
//BinaryReader br2 = новый BinaryReader(f2);
//Byte[] raw2 = br2. ReadBytes ((Int32)f2. Length);

// Поток f3 = fuque.PostedFile.Входной поток;
//BinaryReader br3 = новый BinaryReader(f3);
//Byte[] raw3 = br3. ReadBytes ((Int32)f3. Length);

// Поток f4 = fuque.PostedFile.Входной поток;
//BinaryReader br4 = новый BinaryReader(f4);
//Byte[] raw4 = br4. ReadBytes ((Int32)f4. Length);


FileStream fq = новый FileStream(fuque.PostedFile.Имя Файла, Файловый Режим.OpenOrCreate, FileAccess.Чтение и запись);
byte[] rawq = новый байт[fq.Длина];
fq. Read(rawq, 0, Convert.ToInt32 (fq.Length));

FileStream f1 = новый FileStream(fuopt1.PostedFile.Имя Файла, Файловый Режим.OpenOrCreate, FileAccess.Чтение и запись);
byte[] raw1 = новый байт[f1. Length];
f1. Read (raw1, 0, Convert.ToInt32 (F1. длина));

Файлового потока Ф2 = новый хранилище FileStream(fuopt2.PostedFile.Имя Файла, Файловый Режим.OpenOrCreate, FileAccess.Чтение и запись);
byte[] raw2 = новый байт[f2. Length];
f2. Read (raw2, 0, Convert.ToInt32(F2. Length));

Файлового потока Ф3 = новый хранилище FileStream(fuopt3.PostedFile.Имя Файла, Файловый Режим.OpenOrCreate, FileAccess.Чтение и запись);
byte[] raw3 = новый байт[f3. Length];
f3. Read (raw3, 0, Convert.ToInt32(F3. Length));

FileStream f4 = новый FileStream(fuopt4.PostedFile.Имя Файла, Файловый Режим.OpenOrCreate, FileAccess.Чтение и запись);
byte[] raw4 = новый байт[f4. Length];
f4. Read (raw4, 0, Convert.ToInt32(F4. Length));

int n = addimg(rawq, raw1, raw2, raw3, raw4, ddlopt.SelectedValue, ddlsub.Элемент.Ценность);
если (n == 1)
{
lblmsg.Text = " Q up";
}
}
catch (NullReferenceException ex)
{
lblmsg. Text= "использование процессора" + ex. Message;
}
поймать (исключение бывший)
{
lblmsg.Text = "использование процессора" + ex. сообщение;
}

}
}

CHill60

В дополнение к решению 1-Вы можете найти эту статью полезной Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

F-ES Sitecore

Вы не думаете, что это может помочь, если вы скажете, какая строка из сотен строк, которые вы опубликовали, выдает ошибку?

1 Ответов

Рейтинг:
2

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: Вы попытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, в котором вы держите ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень смешные взгляды, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего такого, что обычно делали бы, когда извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда этого не должно быть.
Но вы можете - и Visual Studio поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, VS покажет вам строку, на которой она обнаружила проблему. Затем вы можете начать смотреть на различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы выяснить, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего полного кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать!