绯色源空 2023-04-09 22:51 采纳率: 100%
浏览 18
已结题

关于#visual studio#的问题,如何解决?

求助大神,我的毕设题目,用的visual studio开发的网上作业提交系统,数据库选用的access数据库,下面是作业上传部分的代码,作业图片采用pdf格式,上传到access中的附件列(字段名称为作业,字段属性为附件),但在代码运行的时候updateCmd.ExecuteNonQuery()老是会报错:至少一个参数没有被指定值,求大神解答


using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace 网上作业提交系统
{
    public partial class 作业上传 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                FileUpload1.Attributes["onchange"] = "UploadFile(this)";
            }
            Label2.Text = ""; // 初始时将 Label2 置为空
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string username = Session["username"].ToString();

            string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\vs2022 asp项目\网上作业提交系统\App_Data\Database1.mdb";
            OleDbConnection connection = new OleDbConnection(connectionString);

            connection.Open();


            if (FileUpload1.HasFile)
            {
                string fileName = FileUpload1.FileName;
                string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower(); // 获取文件扩展名并转换为小写字母
                if (fileExtension == ".pdf") // 判断文件扩展名是否为 .pdf 格式
                {

                    string studentID = "";
                    string queryString = "SELECT 学号 FROM 学生 WHERE 学号=?";
                    OleDbCommand command = new OleDbCommand(queryString, connection);

                    command.Parameters.AddWithValue("@p1", username);
                    OleDbDataReader reader = command.ExecuteReader();
                    if (reader.Read())
                    {
                        studentID = reader.GetString(0);
                    }
                    reader.Close();

                    string homework = Server.MapPath("~/App_Data/") + studentID + ".pdf"; // 修改文件名为学号.pdf
                    FileUpload1.SaveAs(homework); // 保存文件到指定路径
                    byte[] pdfData = File.ReadAllBytes(homework); // 将 PDF 文件读取为字节数组
                    string updateQuery = "UPDATE 学生 SET 作业.value=? WHERE 学号=?";
                    OleDbCommand updateCmd = new OleDbCommand(updateQuery, connection);
                    OleDbParameter pdf = new OleDbParameter("@p1", OleDbType.Binary); // 指定第一个参数的数据类型为二进制数据
                    pdf.Value = (pdfData == null) ? (object)DBNull.Value : pdfData; // 将 PDF 文件读取为字节数组
                    updateCmd.Parameters.Add(pdf);
                    OleDbParameter studentIDParam = new OleDbParameter("@p2", OleDbType.VarChar, 50);
                    studentIDParam.Value = studentID;
                    updateCmd.Parameters.Add(studentIDParam); // 指定第三个参数的值
                    updateCmd.ExecuteNonQuery(); // 执行更新操作


                    Label2.Text = "上传成功,五秒后返回首页.";
                    System.Threading.Thread.Sleep(5000); // 暂停5秒
                    Response.Redirect("首页.aspx");

                }

            }
            else
            {
                Label2.Text = "仅支持上传 .pdf 格式的文件!";
            }


            connection.Close();

        }
    }
}
 

img

img

img

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-04-09 23:18
    关注

    string updateQuery = "UPDATE 学生 SET 作业.value=? WHERE 学号=?";
    作业.value 这个应该不对,不太建议你把附件放在数据库里,建议是上传,把附件的文件名放在数据库里

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月9日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来