2016-01-08 3 views
0

Я разрабатываю сайт для родительской ассоциации, для школы. Моя система имеет две зарезервированные области, к которым имеют доступ родители, а также учителя/школьники. Эти две области - это backoffice и FrontOffice.Невозможно вставить информацию в базу данных SQL

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

Случается, что для этого, я имею следующий код:

protected void ReserveMeal (object sender, EventArgs e) 
     { 
      string tipoRefeicao=string.Empty; 
      DateTime DataSelecionada = Convert.ToDateTime(BasicDatePicker1.Text.ToString()); 
      bool refeicaoFinalizada = false; //Refeicao nao é consumida no imediato 

      try 
      { 

       //ligar a base de dados e realizar nova conexao 
       SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Vitor\Documents\Visual Studio 2015\Projects\Educational\Educational\App_Data\SchoolPASS.mdf; Integrated Security=True;Connect Timeout=30"); 
       con.Open(); 
       string selectUser = "SELECT count (*) from EEAluno where NomeUtilizadorEE='" + newName + "'"; 
       string res = Convert.ToString(selectUser); 
       SqlCommand com = new SqlCommand(selectUser, con); 
       int temp = Convert.ToInt32(com.ExecuteScalar().ToString()); 
       con.Close(); 
       if (temp == 1) 
       { 
        con.Open(); 
        string verificaPassword = "select Password from EEAluno where NomeUtilizadorEE='" + newName + "'"; 
        SqlCommand passCommand = new SqlCommand(verificaPassword, con); 
        string password = passCommand.ExecuteScalar().ToString(); 
        if (password == Session["Pass"].ToString())//Nao testado 
        { 
         //Inserir refeicao numa tabela nova 
         SqlCommand insert = new SqlCommand("INSERT INTO TabelaRefeicoesEncomendadas (NomePessoa,TipoRefeicao,Data, Finalizada) VALUES (@NomePessoa,@TipoRefeicao,@Data,@Finalizada)", con); 
         //insert.Parameters.Add("@Id", 1); 
         insert.Parameters.AddWithValue("@NomePessoa", newName); 
         insert.Parameters.AddWithValue("@TipoRefeicao", tipoRefeicao); 
         insert.Parameters.AddWithValue("@Data", DataSelecionada); 
         insert.Parameters.AddWithValue("@Finalizada", refeicaoFinalizada);//escreve falso na DB 

        } 

       } 
      } 
      catch (Exception exc) 
      { 

      } 


     } 

Doing тщательно анализ, в коде, вы можете заметить, что я, пытаясь проверить, если пользователь autenticated правильный пользователь ,

Так что, если у нас есть много пользователей внутри таблицы БД, только один, только, например, «Х» (я предположил, что «Х» успешно прошел регистрацию в системе), является активным пользователем на определенном компьютере и только «Х» может зарезервировать еду для соответствующих детей.

Резюме: Я нашел в алгоритме для проверки пользовательской сессии, а затем вставить зарезервированное питание в таблицу базы данных. Мне не удалось. Я думаю, что он не может правильно проверить сеансы. Существуют две ошибки.

  1. Каждый раз, когда я пытаюсь создать еду (когда вызывается метод), имя пользователя увеличивается, так что если имя пользователя является «X» имя пользователя становится «XX»
  2. Информация о еде не вставлена База данных SQL.

Не могли бы вы помочь мне!

+0

ли работа, когда вы удалите все, кроме утверждений SQL? Любая ошибка или исключение? Кроме того: прочитайте что-нибудь о SQL-инъекциях и подготовленных инструкциях, когда у вас есть запасные минуты – Marged

+1

Для 2 вы не выполняете команду 'insert'. – adrianbanks

+0

Я выполняю (sqlcommand) с именем insert! –

ответ

0

На основе кода, предоставленного в комплекте, вы не выполняете команду sql для вставки.

Что-то, как это должно работать, после того, как вы закончили настройки параметров:

   insert.ExecuteNonQuery(); 
Смежные вопросы