如何在C#WinForms中将多个附件上传到数据库

时间:2019-02-04 20:58:27

标签: c# winforms ado.net

我可以在一个数据视图网格中选择多个附件。但是有什么方法可以将多个附件上传到数据库。使用此代码,我每次提交只能上传一个附件。请帮助Here is the form image

代码如下:

public byte[] document;

private void linklabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    DialogResult result = openFileDialog1.ShowDialog();           
    if(result == DialogResult.OK)
    {
        int i = dgv.Rows.Count;


        string filename = openFileDialog1.FileName;
        FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fs);
        document = br.ReadBytes((Int32)fs.Length);
        br.Close();
        fs.Close();
        //MessageBox.Show(filename);
        string[] f = filename.Split('\\');
        string fn = f[(f.Length) - 1];
        //MessageBox.Show(fn);
        dgv.Rows.Add();
        dgv.Rows[i].Cells[0].Value = fn;
    }      
}

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        con.Open();
        SqlCommand submit = new SqlCommand("insert into submission (module,Department,priority,description,attachments,assigned_to,comments)" +
            " values(@module,@Department,@priority,@description,@attachments,@assigned_to,@comments)", con);
        submit.Parameters.AddWithValue("@module", cb1_module.Text.Trim());
        submit.Parameters.AddWithValue("@Department", cb2_dep.Text.Trim());
        submit.Parameters.AddWithValue("@priority", cb3_priority.Text.Trim());
        submit.Parameters.AddWithValue("@description", richTextBox1.Text.Trim());
        submit.Parameters.AddWithValue("@attachments", document);
        submit.Parameters.AddWithValue("@assigned_to", cb4_Assign.Text.Trim());
        submit.Parameters.AddWithValue("@comments", richTextBox2.Text.Trim());
        submit.ExecuteNonQuery();
        con.Close(); dgv.Rows.Clear();
        cb1_module.Text = "";
        cb2_dep.Text = "";
        cb3_priority.Text = "";
        richTextBox1.Text = "";
        cb4_Assign.Text = "";
        richTextBox2.Text = "";
        MessageBox.Show("Ticket Raised and Sumitted.. !!");
    }
    catch(Exception excep)
    {
        MessageBox.Show(excep.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

1 个答案:

答案 0 :(得分:0)

在button_click事件中:

for(int val = 0; val<dgv.Rows.Count; val++)
                {
                    if(dgv.Rows[val].Cells[0].Value.ToString()!= "")
                    {
                        FileStream fs = new FileStream(dgv.Rows[val].Cells[0].Value.ToString(), FileMode.Open, FileAccess.Read);
                        BinaryReader br = new BinaryReader(fs);
                        document = br.ReadBytes((Int32)fs.Length);
                        br.Close();
                        fs.Close();
                    }
                }

通过这种方式,我拉出了存储在数据网格视图中的字符串,并将它们传递给文件流,其余的都可以正常工作

相关问题