You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OleDbException抛出:按钮点击方法提示未提供对应值,如何定位解决?

问题原因分析
  • SQL语句拼接存在语法错误和安全风险:如果DCNOMINATION表的NOMINATION_NO字段为字符串类型,当前拼接逻辑没有给查询值加单引号,会直接触发OLEDB语法错误;如果字段为数字类型,若TextBox1.Text输入的内容不是合法数字,同样会触发语法错误。此外直接拼接用户输入内容存在严重SQL注入风险,攻击者可构造特殊输入窃取、篡改甚至删除全量数据。
  • 存在冗余的命令调用:ExecuteNonQuery仅用于执行增删改类SQL语句,查询场景无需调用,且OleDbDataAdapter的Fill方法会自动处理命令执行逻辑,额外调用属于冗余操作,还可能引发不必要的异常。
  • 数据库连接资源管理不规范:将OleDbConnection定义为类全局成员,在ASP.NET多请求并发场景下会出现线程安全问题;同时未使用using语句自动释放资源,若代码执行中途抛出异常,连接会一直处于打开状态,引发连接泄漏。
修正后的代码
public partial class _Default : Page
{
    // 连接串提取为常量,便于统一维护
    private const string ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\Users\micky\OneDrive\Documents\DataBase Connection Porject\DCNoms.accdb; Persist Security Info=False;";

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable table1 = new DataTable();
        // 方法内创建连接,通过using语句自动释放资源,无需手动调用Close
        using (OleDbConnection connection = new OleDbConnection(ConnectionString))
        using (OleDbCommand command = connection.CreateCommand())
        {
            command.CommandType = CommandType.Text;
            // 使用参数化查询,规避语法问题和SQL注入风险
            command.CommandText = "select * from DCNOMINATION where NOMINATION_NO = ?";
            // OleDB参数按顺序匹配,与参数名称无关
            command.Parameters.AddWithValue("@NominationNo", TextBox1.Text);
            
            using (OleDbDataAdapter da1 = new OleDbDataAdapter(command))
            {
                // Fill方法会自动打开、关闭连接,无需手动调用Open
                da1.Fill(table1);
            }
        }
        GridView1.DataSource = table1;
        GridView1.DataBind();
    }
}

注意:连接串中的路径DataBase Connection Porject存在拼写错误,正确拼写应为DataBase Connection Project,如果实际路径与拼写不一致会触发连接失败异常,建议核对数据库文件路径。

内容的提问来源于stack exchange,提问作者Michael Braham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 18:57:01