【问题标题】:System Data OleDb OleDbException: 'No value given for one or more required parameters.'系统数据 OleDb OleDbException:“没有为一个或多个必需参数提供值。”
【发布时间】:2022-01-25 05:39:32
【问题描述】:

https://i.stack.imgur.com/VBvoy.png https://i.stack.imgur.com/sSAci.png

每次我提交表单,而不是在 Access 中向我发送信息,它都会给我这个错误。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web.Security;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;



public partial class _Default : System.Web.UI.Page
{
    public string fn = "", sn = "", un = "", ea = "", pa = "", by = "", co = "", msg2 = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        string sqlS = "";

        string fileName = "RegDatabase.mdb";



        if (IsPostBack)
        {
            fn = Request.Form["first_name"];
            sn = Request.Form["sur_name"];
            un = Request.Form["user_name"];
            ea = Request.Form["email_address"];
            pa = Request.Form["pass"];
            by = Request.Form["birth_year"];
            co = Request.Form["country"];


            int bYear = int.Parse(by);


            string selectQuery = "SELECT * FROM [SignUpDatabase] WHERE User_name = '" + un + "'";
            if (!MyAdoHelper.IsExist(fileName, selectQuery))
            {
                sqlS = "INSERT INTO [SignUpDatabase] VALUES ('" + fn + "','" + sn + "','" + un + "'," + ea + "'," + pa + "'," + by + "'," + co + ")";

                MyAdoHelper.DoQuery(fileName, sqlS);


            }
        }
    }
}

如果您需要,这是代码。 想知道还有什么细节可以告诉你的。

【问题讨论】:

  • An image of your code is not helpful。将您有疑问的代码复制并粘贴到问题中,或者最好创建一个minimal reproducible example。使用代码格式化功能确保其他人可以轻松阅读。
  • 欢迎来到Stack Overflow。对于您遇到的任何具体问题,请提供minimal reproducible example。另请阅读How do I ask a good question?What types of questions should I avoid asking?。确保您的问题是具体的而不是过于宽泛,另请参阅What topics can I ask about here?。另外,请务必使用tour(您会获得徽章!)。
  • 请学习使用参数化sql语句,不要串接。
  • 这里有很多问题。将字符串连接在一起时的 Sql Injection 问题暂时放在一边,但如果其中一个字符串包含单引号,您认为会发生什么?并且不指定字段的 INSERT 要求您为表中的每个字段传递值,现在查看 ea、pa、by 之前缺少的引号。如果你开始使用参数,这一切都不会发生
  • 检查 sqlS 的语法错误。修复它们,然后尝试在其中一个文本框中输入'。然后使用参数来修复它等等

标签: c# asp.net ms-access asp.net-web-api


【解决方案1】:

使用正确的语法 - 并且by 应该是数字。:

sqlS = "INSERT INTO [SignUpDatabase] VALUES ('" + fn + "','" + sn + "','" + un + "','" + ea + "','" + pa + "'," + by + ",'" + co + "')";

【讨论】:

  • 请使用参数避免SQL注入。
  • @user9938:请坚持这个问题。直接的问题值得直接回答。此外,值是从存储的记录中获取的,因此没有注入,即使是这样,Access SQL 也无法运行内联操作查询。也就是说,由于代码更简洁,我和其他大多数人一样更喜欢参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多