Проблема с сохранением данных в таблицах в asp.net с помощью c # - PullRequest
0 голосов
/ 18 апреля 2011

Здравствуйте, у меня сегодня проблема с моим приложением, оно столкнулось с серьезной проблемой:

Я использую vs2008 prof с его SQL Server 2005 Express Edition.

Проблема в том, что когда япопытаться обновить строку в одной таблице, update.executeNonQuery () возвращает значение 1, что означает, что была обновлена ​​1 строка, но строка не обновлена.

Если я пытаюсь изменить значение вручнуюоткрыв данные таблицы и изменив поле, оно работает и сохраняет, но в противном случае ничего не делает.

Я также пытался запустить его на другом компьютере с тем же набором программного обеспечения, и то же самое пытался запустить егопо IIS7, и проблема не исчезает.

Кто-нибудь может дать несколько советов о том, что я должен делать, или если кто-то сталкивался с этой проблемой, мне действительно нужна помощь, и я буду очень признателен за это!

Позднее редактирование: - Добавлен исходный код

    int user_id = (int)Session["UserId"];
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    con.Open();
    SqlCommand update = new SqlCommand("update profil_candidat set nume = @pnume, prenume = @pprenume, data_nasterii = @pdata_nasterii, id_oras = @pid_oras , adresa = @padresa where id_utilizator=@pid_utilizator",con);
    update.Parameters.Add("pnume", SqlDbType.VarChar);
    update.Parameters.Add("pprenume", SqlDbType.VarChar);
    update.Parameters.Add("pdata_nasterii", SqlDbType.VarChar);
    update.Parameters.Add("pid_oras", SqlDbType.VarChar);
    update.Parameters.Add("padresa", SqlDbType.VarChar);
    update.Parameters.Add("pid_utilizator",SqlDbType.Int);
    int an = Convert.ToInt32(AnDropDownList.SelectedItem.Value);
    int luna = Convert.ToInt32(LunaDropDownList.SelectedItem.Value);
    int zi = Convert.ToInt32(ZiDropDownList.SelectedItem.Value);
    DateTime data = new DateTime(an, luna, zi);
    update.Parameters["pnume"].Value = TextBoxNume.Text;
    update.Parameters["pprenume"].Value = TextBoxPrenume.Text;
    update.Parameters["pdata_nasterii"].Value = data;
    update.Parameters["pid_oras"].Value = DropDownList1.SelectedItem.Value;
    update.Parameters["padresa"].Value = TextBoxAdresa.Text;
    update.Parameters["pid_utilizator"].Value = int.Parse(Session["UserId"].ToString());
    update.ExecuteNonQuery();
    con.Close();

Позднее редактирование

Решена проблема, похоже, что на самом деле это было связано с:

C # Обновление таблицы с использованием SqlCommand.Parameters ASP.NET

кто-то забыл поместить инициализацию формы в загрузку страницы в if (Page.IsPostBack), и в этом не было ничего плохогос базой данных, но параметры, отправленные в операторе, всегда были предварительно загружены в событие ... все равно спасибо за быстрые ответы!

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

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

Подключитесь к своему экземпляру SQL Express, используя точно такой жеучетные данные, как у вас в файле web.config.Затем выполните тот же запрос и посмотрите, что произойдет.

0 голосов
/ 18 апреля 2011

Если executeNonQuery возвращает 1, то, вероятно, оно успешно обновляется где-то , в противном случае вы должны получить исключение, или оно вернет 0. Проверьте строку подключения в файле web.config и убедитесь, что ваш сайт указывает на базу данных, которая, по вашему мнению, является.

Обновление

Часть строки подключения Data Source=.\SQLEXPRESS означает, что вы подключаетесь к экземпляру SQL Server с именем SQLEXPRESS на локальном хосте, поэтому, если вы развертываете свой проект на другом компьютере, он больше не будет подключаться к тому же Файл .mdf, который хранится на вашем компьютере, он будет использовать файл .mdf на другом компьютере. См. Эту статью в блоге MSDN для получения дополнительной информации о работе с базой данных User Instance и подключении к ней из Server Management Studio:

Подключение к пользовательским экземплярам SQL Express в Management Studio

...