Member 11873864 Ответов: 1

Какой тип данных требуется для сохранения максимального количества символов в базе данных (SQL server) из visual studio


Имя таблицы : tbl_media
идентификатор инт
название varchar (макс.)
описание varchar (макс.)

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

But when I am saving data from Visual Studio web application then it is saving only 25 characters.but I want to save maximum characters in description.How to do this?

Suvendu Shekhar Giri

Поделитесь кодом / хранимой процедурой, которую вы написали для вставки данных.

1 Ответов

Рейтинг:
1

OriginalGriff

Все будет зависеть от того, как вы передадите данные в SQL. Если вы передаете его путем конкатенации строк, то, по всей вероятности, это ваша проблема - и наименьшая из ваших проблем, поскольку она оставляет вас широко открытыми для SQL-инъекций, которые могут повредить или уничтожить вашу базу данных.

Попробуйте что-нибудь вроде этого:

using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con))
        {
        cmd.Parameters.AddWithValue("@C1", myValueForColumn1);
        cmd.Parameters.AddWithValue("@C2", myValueForColumn2);
        cmd.ExecuteNonQuery();
        }
    }
И посмотрим, решит ли это проблему. А затем проверьте остальную часть вашего кода на конкатенацию строк!



Я сохраняю данные с помощью этого кода :
SqlCommand cmd = new SqlCommand("insert into tbl_media(id,title,description) values(@id,@title,@description)", con);
SqlParameter[] prms = new SqlParameter[3];
prms[0] = new SqlParameter("@id", SqlDbType.VarChar, 50);
prms[0].Value = Session["id"].ToString();
prms[1] = new SqlParameter("@title", SqlDbType.VarChar, 50);
prms[1].Value = txtTitle.Text;
prms[2] = new SqlParameter("@description", SqlDbType.VarChar, 100);
prms[2].Value = txtDescription.Text;
cmd.Parameters.AddRange(prms);


В этом случае вы специально указываете системе усечь ваш заголовок и описание до 50 и 100 символов и передать данные Юникода в поле, не являющееся юникодом. Кроме того, вы передаете непроверенную строку в целочисленный столбец, что не очень хорошая идея.
Вместо этого сделайте свой заголовок и описание столбцов NVARCHAR, а затем попробуйте сделать это:
using (SqlCommand cmd = new SqlCommand("INSERT INTO tbl_media (id, title, description) VALUES (@id, @title, @description)", con))
   {
   cmd.Parameters.AddWithValue("@id", (int) Session["id"]);
   cmd.Parameters.AddWithValue("@title", txtTitle.Text);
   cmd.Parameters.AddWithValue("@description", txtDescription.Text);
   ...
   }
Таким образом, вы ничего не усекаете.

Объекты SqlCommand и SqlConnection являются дефицитными ресурсами и всегда должны быть утилизированы, когда вы закончите с ними. Если вы этого не сделаете, вы можете получить некоторые странные ошибки, особенно в многопользовательской среде, такой как интернет.


CPallini

5.

Member 11873864

Я сохраняю данные с помощью этого кода :
Команда sqlcommand cmd и = новая команда sqlcommand("вставить в tbl_media(ID,название,описание) значения(@ИД@заголовок, описание)", кон);
SqlParameter[] prms = новый SqlParameter[3];
prms[0] = новый SqlParameter ("@id", SqlDbType. VarChar, 50);
prms[0]. Value = Session ["id"].Метод toString();
prms[1] = новый SqlParameter ("@title", SqlDbType. VarChar, 50);
prms[1]. Value = txtTitle.Текст;
prms[2] = новый SqlParameter ("@description", SqlDbType. VarChar, 100);
prms[2]. Value = txtDescription.Текст;

УМК.Параметры.AddRange (prms);

Member 11873864

Спасибо.Ваш код работает.

Member 11873864

В моем веб-приложении теперь я хочу отображать носитель (изображение,заголовок, описание), но не в виде сетки.Не могли бы вы предложить мне другой способ?У меня есть одна ссылка также для демо-версии, где они отображают изображение, название и описание с помощью кнопки Read More
http://www.spacefoundation.org/media

OriginalGriff

Пожалуйста!