当前位置: 首页 > 知识库问答 >
问题:

系统. ArgumentNullException类型的未处理异常发生在mscorlib.dll附加信息:路径不能为空

沃驰
2023-03-14

当图片框中的图像为空时,我试图将数据添加到数据库中,但当picturebox包含图像时,系统工作正常,因此出现了此错误。

错误:

“System”类型的未处理异常。mscorlib中发生ArgumentNullException。dll

附加信息:路径不能为空。

错误指向:

fsStream=新文件流(this.imagePath,FileMode.Open,FileAccess.Read);

这是我正在使用的代码:

Random _random = new Random();
        Timer _timer = new Timer();
        Wait _wait = new Wait();

        FileStream fsStream;
        BinaryReader bReader;

        byte[] imageByte = null;

        string imagePath;

        string gender;

        string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\db1.accdb";

private void button1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog dlg = new OpenFileDialog())
            {
                dlg.Title = "Open Image";
                dlg.Filter = "JPG Files (*.jpg)|*.jpg|PNG Files (*.png)|*.png|All Files (*.*)|*.*";

                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = new Bitmap(dlg.FileName.ToString());
                    imagePath = dlg.FileName;
                }
            }
        }


public virtual void button2_Click(object sender, EventArgs e)
        {
            fsStream = new FileStream(this.imagePath, FileMode.Open, FileAccess.Read);
            bReader = new BinaryReader(fsStream);
            imageByte = bReader.ReadBytes((int)fsStream.Length);

            if (this.pictureBox1.Image == null || this.textBox2.Text == "" || this.textBox3.Text == "" || this.textBox4.Text == "" || this.textBox5.Text == "")
            {
                System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                _sound.Play();

                DialogResult _dialogResult = MessageBox.Show("Cannot Submit!", "Warning", MessageBoxButtons.OK);
            }

            else if (this.label9.Visible == false)
            {
                System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                _sound.Play();

                DialogResult _dialogResult = MessageBox.Show("You have to check the Student ID before proceeding!", "Warning", MessageBoxButtons.OK);
            }

            else if (this.label8.Visible == true)
            {
                System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                _sound.Play();

                DialogResult _dialogResult = MessageBox.Show("You cannot use this Student ID. Please Get another Student ID instead!", "Warning", MessageBoxButtons.OK);
            }

            else if (this.label7.Visible == true)
            {
                System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                _sound.Play();

                DialogResult _dialogResult = MessageBox.Show("Student ID is being verified! Please wait!", "Warning", MessageBoxButtons.OK);
            }

            else
            {
                using (OleDbConnection conn = new OleDbConnection(connectionString))
                {
                    string query = "INSERT INTO [Student] ([StudentID], [FirstName], [LastName], [Photo], [DateOfBirth], [Address], [JoinedDate], [Class], [Gender]) VALUES (@StudentID, @FirstName, @LastName, @Photo, @DateOfBirth, @Address, @JoinedDate, @Class, @Gender)";

                    conn.Open();

                    using (OleDbCommand cmd = new OleDbCommand(query, conn))
                    {
                        cmd.Parameters.Add("@StudentID", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@StudentID"].Value = this.textBox1.Text;

                        cmd.Parameters.Add("@FirstName", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@FirstName"].Value = this.textBox2.Text;

                        cmd.Parameters.Add("@LastName", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@LastName"].Value = this.textBox3.Text;

                        cmd.Parameters.Add("@Photo", System.Data.OleDb.OleDbType.LongVarBinary);
                        cmd.Parameters["@Photo"].Value = imageByte;

                        cmd.Parameters.Add("@DateOfBirth", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@DateOfBirth"].Value = this.dateTimePicker1.Text;

                        cmd.Parameters.Add("@Address", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@Address"].Value = this.textBox4.Text;

                        cmd.Parameters.Add("@JoinedDate", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@JoinedDate"].Value = this.dateTimePicker2.Text;

                        cmd.Parameters.Add("@Class", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@Class"].Value = this.textBox5.Text;

                        cmd.Parameters.Add("@Gender", System.Data.OleDb.OleDbType.VarChar);
                        cmd.Parameters["@Gender"].Value = gender;

                        _wait.ShowDialog();

                        System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                        _sound.Play();

                        DialogResult _dialogResult = MessageBox.Show("Added Successfully!", "Success", MessageBoxButtons.OK);

                        cmd.ExecuteNonQuery();
                    }

                    conn.Close();
                }
            }
        }

图片如下:

按钮1\u单击用于上传照片(图像将显示在右上角)

按钮2\u单击用于提交(将数据添加到数据库)

有人能帮我吗?

非常感谢你的回答!

共有1个答案

慕朝明
2023-03-14

我猜想(可能是错的)错误发生在这条线上:

fsStream = new FileStream(this.imagePath, FileMode.Open, FileAccess.Read);

所以你应该添加一个空检查

if (this.imagePath != null)

并更正以下代码。

正如您在msdn中看到的那样,如果路径为null,FileStream的这个ctor将引发一个ArgumentNullException。

 类似资料:
  • 问题内容: 我想捕获一个异常,将其记录下来,设置一个标志,然后重新抛出相同的异常 我有这个代码: 但是eclipse在throw ex时抱怨,说“未处理的异常类型Exception”,建议我在它周围添加一个try-catch块。 实际上,我希望调用此方法的进程处理该异常,而不是自己处理……如果一切正常,我只想返回true,如果有异常,则将其记录下来 另一方面,我可以将异常包装在另一个异常中,但是不

  • 我正在构建一个颤振应用程序,我必须解析api中的一些数据,我设置了所有内容,但我收到了这个错误,我不知道为什么,我是颤振新手,任何帮助都将不胜感激。谢谢。 生成的错误 这是我的api响应示例 这就是我处理数据的方式 这是模型课

  • 我正在解码一个响应体,我得到了错误: 我在Udemy上学习颤振教程时,正在尝试使用API。教程说要使用https://javiercbk.github.io/json_to_dart/将JSON转换为Dart。我把JSON从https://www.openbrewerydb.org/并将其转换为Dart,但我遇到的问题是,当我尝试解码API时,我得到了未处理的错误异常:“List”类型不是“Map

  • 我对使用颤振和特定于平台的代码非常陌生,所以如果这是一个愚蠢的问题,请原谅我。我正在使用一个事件通道将数据从android端返回到Flatter。我正在返回一份清单 但是,当我试图添加它时,它给出了一个异常,“未处理的异常:类型'列表'不是类型'列表'的子类型 这是我要将贴图对象添加到的列表。 列表 这是我的添加代码。忽略print语句。 我尝试过像cast或from这样的方法,但它对我不起作用,

  • 在我的servlet中,我写了以下语句来加载本体论文件 但是当我运行这个项目时,我得到了以下例外 org.semanticweb.owlapi.io.OWLOntologyInputSourceExc0019:java.io.FileNotFoundExc0019: src\java\本体论\ontology.owl(系统找不到指定的路径) 我怎样才能克服这个问题?

  • 我收到了错误消息: 被精确定位的线在这里: 返回类型为