Я вставляю данные в базу данных.Изображение загружается, но данные не сохраняются? - PullRequest
0 голосов
/ 07 мая 2018

Код указан, так как я пытаюсь вставить данные в базу данных после загрузки изображения, но он не сохраняется. Я не знаю почему ??

public partial class upload : System.Web.UI.Page
{
    protected void UploadVideo_Click(object sender, EventArgs e)
    {

        string constr = @"Data Source=DESKTOP-1VOSUKD\SQLEXPRESS;Initial Catalog=Youtube;Integrated Security=True";
        if (VideoUpload.PostedFile != null && ThumbnailUpload.PostedFile!=null)
        {

            //Video
            string user = Session["user"].ToString();
            string videoname = Path.GetFileName(VideoUpload.PostedFile.FileName);
            string vid = user + "-video-" + videoname.Split('.')[0].ToString();
            string ext = videoname.Split('.')[1];
            string pathServer = Server.MapPath("~\\uservideos\\" + vid + "." + ext);
            VideoUpload.PostedFile.SaveAs(pathServer);
            string pathAccess = "~/uservideos/" + vid + "." + ext;
            string time = "";
            //Thumbnail

            string thumbname = Path.GetFileName(ThumbnailUpload.PostedFile.FileName);
            string thumb = user + "-thumbnail-"+videoname+"-" + thumbname.Split('.')[0].ToString();
            string thumbext = thumbname.Split('.')[1];
            string thumbpathServer = Server.MapPath("~\\thumbnails\\" + thumb + "." + thumbext);
            ThumbnailUpload.PostedFile.SaveAs(thumbpathServer);
            string thumbpathAccess = "~/thumbnails/" + thumb + "." + thumbext;

            //add to database
            try
            {                                        
                SqlConnection con = new SqlConnection(constr);
                con.Open();

                string q = "insert into videos(Upload_User, Title, Discription, Video_Time, Tags, [Format], Thumbnail_Path, Video_Path) " +
                    "values('" + user + "','" + Title.Text + "','" + DiscriptionTextBox.Text + "','" + time + "','" + TagsTextBox.Text + "','" + ext + "','" + pathAccess + "','" + thumbpathAccess + "')";
                SqlCommand cmd = new SqlCommand(q, con);
                cmd.ExecuteNonQuery();
                Response.Write("<script>alert('Data Saved!');</script>");
                con.Close();
            }
            catch (Exception exe)
            {
                Response.Write("<script> alert('"+exe.Message+"');</script>");
            }
        }
    }
}

1 Ответ

0 голосов
/ 08 мая 2018

Вам необходимо сохранить изменения обратно в исходную базу данных. Сейчас это влияет только на БД в рабочем каталоге

Вы можете использовать Entity Framework для этого. Добавьте в решение новый элемент, который называется «Модель данных ADO.NET Entity Framework». Возможно, вам потребуется установить его из NuGet.

Add Database Entity Data Model

Я не знаю, как выглядит структура вашей папки, но вам понадобится копия базы данных в проекте. Также измените свойство базы данных «Копировать в выходной каталог» на «Копировать, если новее». Когда вы добавляете модель данных, она будет проходить настройку.

Step 1 Step 2 Step 3

После этого в коде нужно сделать всего несколько изменений ..

try
{
    Database1Entities database1Entities = new Database1Entities();
    //Edit the connectionString

    SqlConnection con = new SqlConnection(database1Entities.Database.Connection.ConnectionString);
    con.Open();

    //Changed values to be in correct order
    string q = "insert into videos(Upload_User, Title, Discription, Video_Time, Tags, [Format], Thumbnail_Path, Video_Path) " +
                        "values('" + user + "','" + Title.Text + "','" + DiscriptionTextBox.Text + "','" + time + "','" + TagsTextBox.Text + "','" + ext + "','" + thumbpathAccess + "','" + pathAccess + "')";

    SqlCommand cmd = new SqlCommand(q, con);
    cmd.ExecuteNonQuery();

    //Save changes back to source
    database1Entities.SaveChanges();

    Response.Write("<script>alert('Data Saved!');</script>");
    con.Close();
}
...