我设置了filename为关键字,当我上传的文件名字相同时,数据库会显示重复报错,如何避免,应该添加什么语句?

解决方案 »

  1.   


    ??你数据库难道以filename为主键吗??不然怎么会报错- -
      

  2.   

    你可以生成不重复的文件名,按时间、GUID作为文件名是不会出现重名文件名的
      

  3.   

    以下是我实现上传显示的代码,数据库中filename是主键,我就想上传的时候可以判断一下是否已存在,如果存在同名文件,则不允许上传
     Dim fileName As String = Label5.Text + Session("id").ToString
            Dim filesize As Integer = FileUpload1.FileBytes.Length
            Dim filetime As String = DateTime.Now.ToString("yyyy-MM-dd")
            Dim sname As String = Label1.Text
            Dim filecontent As String = TextBox1.Text
            Dim cmd As SqlCommand
            myconn = New SqlConnection("server=localhost;database=database;uid=sa;pwd=sa")
            myconn.Open()
            Dim sqlstr As String = "insert into [file] ([filename],[filesize],[filetime],[filecontent],[sname]) VALUES (@filename,@filesize,@filetime,@filecontent,@sname)"
            cmd = New SqlCommand(sqlstr, myconn)
            cmd.Parameters.AddWithValue("@filename", fileName)
            cmd.Parameters.AddWithValue("@filesize", filesize)
            cmd.Parameters.AddWithValue("@filetime", filetime)
            cmd.Parameters.AddWithValue("@filecontent", filecontent)
            cmd.Parameters.AddWithValue("@sname", sname)
            cmd.ExecuteNonQuery()
            cmd = New SqlCommand("SELECT [filename], [filetime], [sname] FROM [file]", myconn)
            Dim dr As System.Data.SqlClient.SqlDataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
            GridView1.DataBind()
            myconn.Close()
      

  4.   

     用GUID或者唯一编号  如时间精确毫秒 
     M201204011017580001
     
     实在不行然后依次类推加+1
     基本不会存在重复
     
      

  5.   

    到底是上传的文件是要重复还是不要重复哦! 你FileName不是关键字嘛!
    Dim sqlCommendText As String = "select count(1) from [file] where filename=@filename"
    先用这个Sql判断一下是否存在。 
      

  6.   

    filename都是主键了,你还让他重复,怎么搞???