Запрос об ошибке обновления ("Пустой путь недопустим)" - PullRequest
0 голосов
/ 06 августа 2020

введите описание изображения здесь Я новичок в программировании и делаю C# Систему управления церковью, которая сохраняет информацию о членах. Все работает хорошо, за исключением того, что я получаю сообщение об ошибке «Пустой путь недопустим», когда пытаюсь обновить записи, не обновляя также изображение участника. Мне нужна ваша помощь

это коды кнопки обновления

 private void btnUpdate_Click_1(object sender, EventArgs e)
    {
        try
        {
            byte[] img = null;
            
                FileStream fs = new FileStream(ImgLoc, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                img = br.ReadBytes((int)fs.Length);
            

            // setting up connection string
            con = new SqlConnection("Data Source = Localhost; Initial Catalog = ChurchProject; Integrated Security = True");
            con.Open();

            // using commands to get update member records when input
            cmd = new SqlCommand("update members set FullName=@name,Gender=@sex,DateOfBirth=@dob,Auxiliary=@aux,Location=@loc,Address=@address,Telephone=@tel,"
                + "WhatsApp=@whatsapp,Email=@email,[Membership Status]=@memberstat,[Marital Status]=@marital,[Baptismal Status]=@baptismStat,Occupation=@occup,[Baptismal Year]=@baptYear,"
                + "[Admission Year]=@admission,[Prev Church]=@prev,Prev_Position=@prevpost,MemberPic=@img where ID = @id", con);

            // assigning textboxes to database values
            cmd.Parameters.AddWithValue("@id", txtID.Text);
            cmd.Parameters.AddWithValue("@name", txtName.Text);
            cmd.Parameters.AddWithValue("@sex", gender);
            cmd.Parameters.AddWithValue("@dob", dtpDOB.Value);
            cmd.Parameters.AddWithValue("@aux", cmbAuxiliary.Text);
            cmd.Parameters.AddWithValue("@loc", txtLocation.Text);
            cmd.Parameters.AddWithValue("@address", txtAddress.Text);
            cmd.Parameters.AddWithValue("@tel", txtTelNumber.Text);
            cmd.Parameters.AddWithValue("@whatsapp", txtWhatsApp.Text);
            cmd.Parameters.AddWithValue("@email", txtEmail.Text);
            cmd.Parameters.AddWithValue("@memberstat", cmbMembershipstat.Text);
            cmd.Parameters.AddWithValue("@marital", cmbMarital.Text);
            cmd.Parameters.AddWithValue("@baptismStat", cmbBaptism.Text);
            cmd.Parameters.AddWithValue("@occup", txtOccupation.Text);
            cmd.Parameters.AddWithValue("@baptYear", dtpBaptism.Value);
            cmd.Parameters.AddWithValue("@admission", dtpAdmission.Value);
            cmd.Parameters.AddWithValue("@prev", txtPrevChurch.Text);
            cmd.Parameters.AddWithValue("@prevpost", txtPosition.Text);
            cmd.Parameters.Add(new SqlParameter("@img", img));

            DialogResult dr = MessageBox.Show("Do you want to Update the Records? This cannot be undone!", "Membership Update Status", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (dr == DialogResult.Yes)
            {


                cmd.ExecuteNonQuery();
                MessageBox.Show("Records Updated Successfully", "Membership Status", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                //Do nothing!
            }

          
            loadMemberRecords();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); ;
        }

    }

1 Ответ

1 голос
/ 06 августа 2020

Наиболее вероятная причина, по которой вы получили это сообщение, заключается в том, что путь, переданный конструктору FileStream, равен нулю или пустой строке. Telepath в моей голове говорит, что кажется, что вам нужно передать все файловые операции, если ImgLo c имеет значение null или пустую строку, например:

if (!string.IsNullOrWhitespace(ImgLoc))
{
    FileStream fs = new FileStream(ImgLoc, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    img = br.ReadBytes((int)fs.Length);
}

Также вам нужно обновить текст запроса SQL построение вроде этого:

string sql = string.Format("update members set FullName=@name,Gender=@sex,DateOfBirth=@dob,Auxiliary=@aux,Location=@loc,Address=@address,Telephone=@tel,"
                + "WhatsApp=@whatsapp,Email=@email,[Membership Status]=@memberstat,[Marital Status]=@marital,[Baptismal Status]=@baptismStat,Occupation=@occup,[Baptismal Year]=@baptYear,"
                + "[Admission Year]=@admission,[Prev Church]=@prev,Prev_Position=@prevpost{0} where ID = @id", string.IsNullOrWhitespace(ImgLoc) ? "" : ", MemberPic=@img");

cmd = new SqlCommand(sql, con);

И, наконец, в этом случае вам нужно игнорировать параметр @img:

if (!string.IsNullOrWhitespace(ImgLoc))
{
    cmd.Parameters.Add(new SqlParameter("@img", img));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...