c# - 如何使用 GUID 在 C# 中添加记录?

标签 c# asp.net

我正在使用 c# 和 asp .net 创建学生记录。为此,我添加了 5 个字段 - 名称、类别、部门、地址和图像。

当插入student1.jpg 时,它工作正常。当我插入具有不同图像的同名 (student1.jpg) 的第二条记录时出现问题。插入失败并出现“图像已存在”之类的错误。

了解了GUID的用途后,我想将这些用于我的工作。

是否可以这样做,如果可以,有人可以帮助我吗?

这是我的完整代码隐藏文件:

protected void btnsub_Click(object sender, EventArgs e)
        {
            SqlConnection con = Connection.DBconnection();
            if (Textid.Text.Trim().Length > 0)
            {
                SqlCommand com = new SqlCommand("StoredProcedure3", con);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.AddWithValue("@id", Textid.Text.Trim());
                com.Parameters.AddWithValue("@Name", Textusername.Text.Trim());
                com.Parameters.AddWithValue("@Class", Textclass.Text.Trim());
                com.Parameters.AddWithValue("@Section", Textsection.Text.Trim());
                com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim());
                try
                {
                    string filename = Image1.ImageUrl.Substring(Image1.ImageUrl.IndexOf('/')+1);

                    if (fileupload.PostedFile.FileName.Length > 0)
                    {      
                        filename = Path.GetFileName(fileupload.PostedFile.FileName);                        
                        fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
                    }                  
                    com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
                    com.ExecuteNonQuery();                    
                }
                catch (Exception ex)
                {
                    btnsub.Text = ex.Message;
                }
                    Response.Redirect("studententry.aspx");
            }
            else
            {
                SqlCommand com = new SqlCommand("StoredProcedure1", con);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.AddWithValue("@Name", Textusername.Text.Trim());
                com.Parameters.AddWithValue("@Class", Textclass.Text.Trim());
                com.Parameters.AddWithValue("@Section", Textsection.Text.Trim());
                com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim());
                try
                {
                    string filename = string.Empty;
                    if (fileupload.PostedFile.FileName.Length > 0)
                    {
                        filename = Path.GetFileName(fileupload.PostedFile.FileName);
                        if (File.Exists(Server.MapPath("~/Images/" + filename)))
                        {
                            Label6.Visible = true;
                            return;
                        }

                        fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
                    }
                        com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
                        com.ExecuteNonQuery();                    
                }
                catch (Exception ex)
                {
                    btnsub.Text = ex.Message;
                }
                    Response.Redirect("studententry.aspx");
            }
        }           

谢谢。

最佳答案

Namespace: using System.IO;

对于 StoredProdure3:

string filename = Image1.ImageUrl.Substring(Image1.ImageUrl.IndexOf('/')+1);
if (fileupload.PostedFile.FileName.Length > 0)
{      
    filename = Path.GetFileName(fileupload.PostedFile.FileName); 
    string fileExtension = Path.GetExtension(filename).ToLower();  // this will give you file extension.
    string uniqueFileName = Guid.NewGuid().ToString() + fileExtension;   // this will give you unique filename.
    fileupload.SaveAs(Server.MapPath("~/Images/" + uniqueFileName)); // save the image with guid name.
    com.Parameters.AddWithValue("@Image",(filename.Length > 0) ? "Images/" + uniqueFileName : string.Empty); // now you can save the new filename in database for associated record.
} 

对于 StoredProdure1:

string filename = string.Empty;
if (fileupload.PostedFile.FileName.Length > 0)
{
    filename = Path.GetFileName(fileupload.PostedFile.FileName);
    if (File.Exists(Server.MapPath("~/Images/" + filename)))
    {
        Label6.Visible = true;
        return;
    }
    string fileExtension = Path.GetExtension(filename).ToLower();  // this will give you file extension.
    string uniqueFileName = Guid.NewGuid().ToString() + fileExtension;   // this will give you unique filename.
    fileupload.SaveAs(Server.MapPath("~/Images/" + uniqueFileName)); // save the image with guid name.
}
com.Parameters.AddWithValue("@Image",(filename.Length > 0)? "Images/" + uniqueFileName : string.Empty);
com.ExecuteNonQuery();

现在,即使原始文件名相同但图像不同,所有将保存到驱动器的上传图像都将具有唯一名称。

关于c# - 如何使用 GUID 在 C# 中添加记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796223/

相关文章:

c# - 在 await 语句之后使用 Task.Result 有什么影响吗?

c# - WPF 设计器中窗口上方出现白色边框

c# - 如何重定向到 asp.net core razor 页面(无路由)

c# - Verlet Integration 正在炸毁我的物理引擎

javascript - Asp.net ModalPopupExtender 在 PostBack 期间闪烁

c# - 按钮需要点击两次才能触发事件

c# - 在 C# 中处理图像/视频流

asp.net - 如何加速 AZURE 上部署的 .NET MVC 站点?

c# - .Net Core 3.1 HttpClient 不重用套接字

sql - 我们可以在下拉列表的末尾设置静态值吗?