文件上传发送到数据库并立即显示到gridview中

时间:2016-06-10 16:53:50

标签: c# sql asp.net gridview file-upload

我想要发生的是在网格视图中显示上传的文件(正常工作)并将相同的文件发送到sql数据库(正常工作)。

我的主要任务是将所有上传的文件放在当前登录的人员下面,例如customerA登录,只显示客户A的上传文件。

我已经设法获取会话用户并将其存储在数据库中 enter image description here

在我的数据库中,我现在实现了一个select语句。 (这是我的问题开始的地方)这里是页面加载代码:

public static string cs = "Server=PAULO;Database=ShoppingCartDB;Integrated Security=true";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["New"] != null)
        {
            if (!IsPostBack)
            {
                SqlConnection con = new SqlConnection(cs);
                con.Open();

                string sql = "SELECT * FROM DepositSlip Where Username = '" + Session["New"] + "'";
                SqlDataAdapter da = new SqlDataAdapter(sql, con);
                DataTable dt = new DataTable();
                da.Fill(dt);

                Label2.Text += Session["New"].ToString();
                linkLogout.Visible = true;
                linkOrderHistory.Visible = true;
                Label2.Visible = true;
                linkViewProfile.Visible = true;

                string[] filePaths = Directory.GetFiles(Server.MapPath("~/Uploads/"));
                List<ListItem> files = new List<ListItem>();
                foreach (string filePath in filePaths)
                {
                    files.Add(new ListItem(Path.GetFileName(filePath), filePath));
                }
                GridView1.DataSource= files;
                GridView1.DataBind();
            }
        }
    }

我知道它从目录路径加载文件但我不知道的是如何实现根据会话用户显示从数据库上传的文件。

问题在于,无论登录者是谁,它都会显示相同的数据。

这方面的任何伎俩?

2 个答案:

答案 0 :(得分:0)

我通过删除来完成工作:

Response.Redirect(Request.Url.AbsoluteUri);

答案 1 :(得分:0)

以这种方式试试。

private void button1_Click(object sender, EventArgs e)

{
    SqlConnection con = new System.Data.SqlClient.SqlConnection();
    con = new System.Data.SqlClient.SqlConnection();
    con.ConnectionString = "Server='server_name';Database='database_name';Trusted_Connection=True;";
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter();

    for (int i = 0; i <= dataGridView1.Rows.Count - 2; i++)
    {

        String insertData = "INSERT INTO Import_List(Fname, Lname, Age) VALUES (@Fname, @Lname, @Age)";
        SqlCommand cmd = new SqlCommand(insertData, con);
        cmd.Parameters.AddWithValue("@Fname", dataGridView1.Rows[i].Cells[0].Value);
        cmd.Parameters.AddWithValue("@Lname", dataGridView1.Rows[i].Cells[1].Value);
        cmd.Parameters.AddWithValue("@Age", dataGridView1.Rows[i].Cells[2].Value);
        da.InsertCommand = cmd;
        cmd.ExecuteNonQuery();
    }

    con.Close();
}

这应该也可以。

private void button1_Click(object sender, EventArgs e)
{

    //SqlConnection connection = new SqlConnection("Data Source='server_name';Initial Catalog='database_name';Trusted_Connection=True;");
    DataTable dt = (DataTable)dataGridView1.DataSource;
    string connection = "Data Source=Excel-PC;Initial Catalog=Northwind.MDF;Trusted_Connection=True;";
    using (var conn = new SqlConnection(connection))
    {
        conn.Open();
        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
        {
            bulkCopy.ColumnMappings.Add(0, "Fname");
            bulkCopy.ColumnMappings.Add(1, "Lname");
            bulkCopy.ColumnMappings.Add(2, "Age");

            bulkCopy.BatchSize = 10000;
            bulkCopy.DestinationTableName = "Import_List";
            bulkCopy.WriteToServer(dt.CreateDataReader());
        }
    }

}