Member 12682896 Ответов: 2

Я новичок . Я получил ошибку преобразования типа данных nvarchar в int.


я получил ошибку преобразования типа данных nvarchar в int. я закодировал этот код, увидев видео asp.net о том, как сохранить изображение в базе данных.


//ASP.NET CODE

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Label1.Visible = false;
                HyperLink1.Visible = false;
            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            HttpPostedFile postedFile = FileUpload1.PostedFile;
            string fileName = Path.GetFileName(postedFile.FileName);
            string fileExtension = Path.GetExtension(fileName);
            int fileSize = postedFile.ContentLength;

                if (fileExtension.ToLower() == ".jpg" || fileExtension.ToLower() == ".png"
                    || fileExtension.ToLower() == ".gif" || fileExtension.ToLower() == ".bmp")
                    
                {
                    Stream stream = postedFile.InputStream;
                    BinaryReader binaryreader = new BinaryReader(stream);
                    byte[] bytes = binaryreader.ReadBytes((int)stream.Length);

                    string connstring = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                    //  string connstring = "data source=AMOD; initial catalog=DATA; integrated security=SSPI;";
                    using (SqlConnection con = new SqlConnection(connstring))
                    {
                        SqlCommand cmd = new SqlCommand("spUploadImage", con);
                        cmd.CommandType = CommandType.StoredProcedure;

                        SqlParameter paramName = new SqlParameter()
                           {
                               ParameterName = "@Name",
                               Value = fileName
                           };
                        cmd.Parameters.Add(paramName);

                        SqlParameter paramSize = new SqlParameter()
                        {
                            ParameterName = "@size",
                            Value = fileName
                        };
                        cmd.Parameters.Add(paramSize);

                        SqlParameter paramImageData = new SqlParameter()
                        {
                            ParameterName = "@ImageData",
                            Value = fileName
                        };
                        cmd.Parameters.Add(paramImageData);

                        SqlParameter paramNewId = new SqlParameter()
                        {
                            ParameterName = "@NewId",
                            Value = -1,
                            Direction = ParameterDirection.Output
                        };
                        cmd.Parameters.Add(paramNewId);

                        con.Open();
                        cmd.ExecuteNonQuery();
                        con.Close();

                        Label1.Visible = true;
                        Label1.Text = "UpLoaded Successfully";
                        Label1.ForeColor = System.Drawing.Color.Green;
                        HyperLink1.Visible = true;
                        HyperLink1.NavigateUrl = "~/WebForm2.aspx?Id=" + cmd.Parameters["@NewId"].Value.ToString();
                    }
                }
                else
                {
                    Label1.Visible = true;
                    Label1.Text = "Only Images( .jpg, .png, .bmp, gif) can be uploaded!!!!!!!!";
                    Label1.ForeColor = System.Drawing.Color.Red;
                    HyperLink1.Visible = false;
                }

            }



/// КОД БАЗЫ ДАННЫХ

alter proc spUploadImage
@Name nvarchar(250),
@Size int,
@ImageData varbinary(MAX),
@NewId int output
as begin
insert into tblImage values(@Name,@Size,@ImageData)

select @NewId=SCOPE_IDENTITY()
end

select * from tblImage


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

я попытался сохранить изображение в базе данных. использование ASP.NET,C# & amp; SQL server

F-ES Sitecore

Какая строка выдает ошибку?

Member 12682896

на линию УМК.метод executenonquery

2 Ответов

Рейтинг:
15

Animesh Datta

Привет ,
Просто передайте правильное значение для правильных параметров .

SqlParameter paramSize = new SqlParameter()
                        {
                            ParameterName = "@size",
                            Value = fileName
                        };


Здесь вы объявляете параметр filesize и назначаете имя файла .Вот почему приходит ошибка .
Измените код выше и попробуйте ниже
SqlParameter paramSize = new SqlParameter()
                        {
                            ParameterName = "@size",
                            Value = fileSize; //change here
                        };

а также изменить данные изображения

SqlParameter paramImageData = new SqlParameter()
                      {
                          ParameterName = "@ImageData",
                          Value = bytes ;
                      };

Спасибо


Рейтинг:
1

ZurdoDev

Вы устанавливаете значение 3 ваших параметров в fileName, включая переменную size. Ошибка говорит вам, что вы пытаетесь преобразовать строку в int, и в этой строке есть что-то, что не является int.

Исправьте свои параметры, и тогда он будет работать нормально.


Member 12682896

на самом деле. я написал этот код, посмотрев видео. в видео его код работает, а мой-нет

ZurdoDev

Из-за того, что я сказал тебе, и из-за того, что ошибка сказала тебе. Ошибка не во лжи.