【问题标题】:Cannot insert information in SQL database无法在 SQL 数据库中插入信息
【发布时间】:2016-01-08 23:44:22
【问题描述】:

我正在为家长协会和学校开发一个网站。我的系统有两个保留区域,家长和教师/学校成员都可以访问。这两个区域,分别是后台和前台。

我可以用爸爸或妈妈的用户名和他们各自的密码开始一个新的会话,然后在前台我有一个新页面,据推测,新的饭菜被成功保留,结果是新行应插入到 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)
            {

            }


        }

在代码中进行仔细分析,您可以观察到我正在尝试检查经过身份验证的用户是否是正确的用户。

因此,如果我们在一个 DB 表中有许多用户,那么只有一个,例如“X”(我假设“X”已成功登录系统)是活动用户,在确定的计算机中,并且只有“ X"可以为各自的孩子预订一顿饭。

简历:我想到了一种算法来检查用户会话,然后将预订的餐点插入数据库表中。我没有成功。我认为它无法正确验证会话。存在两个错误。

  1. 每次我尝试创建餐点时(调用方法时),用户名都会递增,所以如果用户名是“X”,用户名就会变成“XX”
  2. 餐食信息未插入SQL数据库。

你能帮帮我吗!

【问题讨论】:

  • 删除除 SQL 语句之外的所有语句是否有效?抛出任何错误或异常?除此之外:当你有空闲的时候阅读一些关于 SQL 注入和准备语句的东西
  • 对于 2,您没有执行 insert 命令。
  • 我正在执行一个名为 insert 的(sqlcommand)!!
  • 那个命令错了吗??
  • “我正在执行一个名为 insert 的(sqlcommand)!!” - 不在你上面​​的例子中。

标签: c# sql asp.net database sqlite


【解决方案1】:

根据提供的代码片段,您没有执行插入的 sql 命令。

在您完成参数设置后,这样的事情应该可以工作:

                insert.ExecuteNonQuery();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多