我在vs2003中一个页面上做了2个上传控件,上传控件file1和上传控件file2。
SQL插入语句:insert into(file1,file2)values('"+file1.value+"','"+file2.value+"')
上传按钮button
当我选好2个上传的文件之后点击button则两条记录都能都插入数据库中。
如果我只想插入一条记录的话,该怎么办?前提是必须有2个上传控件。这个上传控件也不像其他的控件一样,不选的话自动在数据库之中插入NULL,可是上传控件没有办法不选这个问题想了快一天了也没有想出来,请教高手,速解决。

解决方案 »

  1.   

    file1 = this.File1.PostedFile.FileName;
    int nLength1 = file1.Length - file1.LastIndexOf("\\") - 1;
    file1 = file1.Substring(file1.LastIndexOf("\\") + 1, nLength1);
    string path1 = Server.MapPath("UpLoad/");
    this.File1.PostedFile.SaveAs(path1 + file1); file2 = this.File2.PostedFile.FileName;
    int nLength2 = file2.Length - file2.LastIndexOf("\\") - 1;
    file2 = file2.Substring(file2.LastIndexOf("\\") + 1, nLength2);
    string path2 = Server.MapPath("UpLoad/");
    this.File2.PostedFile.SaveAs(path2 + file2); SqlConnection ConnSql = new SqlConnection ("uid=sa;pwd=sa;database=patent;server=."); //生成一个新的连接
    ConnSql.Open(); //打开数据库  
    string sql="insert into patentinfo (ppa,egp) values('UpLoad/" +file1+ "','UpLoad/" +file2+ "')";
    SqlCommand cmd=new SqlCommand (sql,ConnSql);//创建Command命令对象
    cmd.ExecuteNonQuery();
    ConnSql.Close();
      

  2.   

    这是我写的代码只能插入2个,插入一个就报错,那是因为我的sql语句中插入的是2条数据,问题是有的时候只需要插入一条就够了。如果是别的控件插入一条数据像这个sql语句就没有问题。唉。
      

  3.   

    string sql="insert into patentinfo (ppa,egp) values('UpLoad/" +file1+ "','UpLoad/" +file2+ "')"; 
    =======
    你这样,执行一次这个语句就是插入一条数据,我不明白你所说的插入两条记录是什么意思-_-!
      

  4.   

    页面上有file1和file2  2个上传控件
    如果我2个控件都选择文件,根据string sql="insert into patentinfo (ppa,egp) values('UpLoad/" +file1+ "','UpLoad/" +file2+ "')"; 
    就能够把数据插入到数据库中。但是有的时候只需要点击file1选择文件,插入就报错
      

  5.   

    明白你的意思了.看下边代码string sql = ="insert into patentinfo (";
    string sql2 = " values (";
    if(File1.HasFile)
    {
    file1 = this.File1.PostedFile.FileName; 
    int nLength1 = file1.Length - file1.LastIndexOf("\\") - 1; 
    file1 = file1.Substring(file1.LastIndexOf("\\") + 1, nLength1); 
    string path1 = Server.MapPath("UpLoad/"); 
    this.File1.PostedFile.SaveAs(path1 + file1); 
    sql+="ppa,";
    sql2+="'UpLoad/" +file1+ "',";
    }
    if(File2.HasFile)
    {
    file2 = this.File2.PostedFile.FileName; 
    int nLength2 = file2.Length - file2.LastIndexOf("\\") - 1; 
    file2 = file2.Substring(file2.LastIndexOf("\\") + 1, nLength2); 
    string path2 = Server.MapPath("UpLoad/"); 
    this.File2.PostedFile.SaveAs(path2 + file2); 
    sql+="egp)";
    sql2+="'UpLoad/" +file2+ "')";
    }
    else
    {
       sql = sql.Replace(",",")");
       sql2 = sql2.Replace(",",")");
    }SqlConnection ConnSql = new SqlConnection ("uid=sa;pwd=sa;database=patent;server=."); //生成一个新的连接 
    ConnSql.Open(); //打开数据库 
    SqlCommand cmd=new SqlCommand (sql+sql2,ConnSql);//创建Command命令对象 
    cmd.ExecuteNonQuery(); 
    ConnSql.Close();你试一下吧.sql如果出错就调试一下sql+sql2,看看这两的值到底是什么.
    我没有试.
      

  6.   

    第一行
    string sql = ="insert into patentinfo (";
    改成
    string sql ="insert into patentinfo (";
      

  7.   

    你是用vs2005做的吗?我是用vs2003做的里面没有File1.HasFile  方法
      

  8.   

    你的File1是什么?
    把你在aspx页中File1的声明发我看看.
      

  9.   

    <form id="Form1" method="post" runat="server">
    <INPUT id="File1" type="file" name="File1" runat="server">
    <INPUT id="File2" type="file" name="File2" runat="server">
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
    </form>
      

  10.   

    改成File1.Value.Trim().Length!=0和File2.Value.Trim().Length!=0
    最终版如下
    (你的上传的逻辑我都没看.不知道你写的对不对,但是sql语句拼接是你的意思,你的上传逻辑我就不管了)string sql ="insert into patentinfo (";
    string sql2 = " values (";
    if(File1.Value.Trim().Length!=0)
    {
    file1 = this.File1.PostedFile.FileName; 
    int nLength1 = file1.Length - file1.LastIndexOf("\\") - 1; 
    file1 = file1.Substring(file1.LastIndexOf("\\") + 1, nLength1); 
    string path1 = Server.MapPath("UpLoad/"); 
    this.File1.PostedFile.SaveAs(path1 + file1); 
    sql+="ppa,";
    sql2+="'UpLoad/" +file1+ "',";
    }
    if(File2.Value.Trim().Length!=0)
    {
    file2 = this.File2.PostedFile.FileName; 
    int nLength2 = file2.Length - file2.LastIndexOf("\\") - 1; 
    file2 = file2.Substring(file2.LastIndexOf("\\") + 1, nLength2); 
    string path2 = Server.MapPath("UpLoad/"); 
    this.File2.PostedFile.SaveAs(path2 + file2); 
    sql+="egp)";
    sql2+="'UpLoad/" +file2+ "')";
    }
    else
    {
       sql = sql.Replace(",",")");
       sql2 = sql2.Replace(",",")");
    }SqlConnection ConnSql = new SqlConnection ("uid=sa;pwd=sa;database=patent;server=."); //生成一个新的连接 
    ConnSql.Open(); //打开数据库 
    SqlCommand cmd=new SqlCommand (sql+sql2,ConnSql);//创建Command命令对象 
    cmd.ExecuteNonQuery(); 
    ConnSql.Close();
      

  11.   

                            string sql ="insert into patentinfo (";
    string sql2 = " values (";
    if(File1.Value.Trim().Length!=0)
    {
    file1 = this.File1.PostedFile.FileName; 
    int nLength1 = file1.Length - file1.LastIndexOf("\\") - 1; 
    file1 = file1.Substring(file1.LastIndexOf("\\") + 1, nLength1); 
    string path1 = Server.MapPath("UpLoad/"); 
    this.File1.PostedFile.SaveAs(path1 + file1); 
    sql+="ppa,";
    sql2+="'UpLoad/" +file1+ "',";
    }
    if(File2.Value.Trim().Length!=0)
    {
    file2 = this.File2.PostedFile.FileName; 
    int nLength2 = file2.Length - file2.LastIndexOf("\\") - 1; 
    file2 = file2.Substring(file2.LastIndexOf("\\") + 1, nLength2); 
    string path2 = Server.MapPath("UpLoad/"); 
    this.File2.PostedFile.SaveAs(path2 + file2); 
    sql+="egp)";
    sql2+="'UpLoad/" +file2+ "')";
    }
    else
    {
    sql = sql.Replace(",",")");
    sql2 = sql2.Replace(",",")");
    }我的字段是这样子的 id,name,ppa,egp,re  我想问下,我insert into 的时候其他字段怎么加入???是这个样子吗?
                            string sql ="insert into patentinfo (";
    string sql2 = " values (";
    if(File1.Value.Trim().Length!=0)
    {
    file1 = this.File1.PostedFile.FileName; 
    int nLength1 = file1.Length - file1.LastIndexOf("\\") - 1; 
    file1 = file1.Substring(file1.LastIndexOf("\\") + 1, nLength1); 
    string path1 = Server.MapPath("UpLoad/"); 
    this.File1.PostedFile.SaveAs(path1 + file1); 
    sql+="id,name,ppa,,re";
    sql2+="'"+txtid.Text+"','"+txtname.Text+"','UpLoad/" +file1+ "',,txtre.Text";
    }
      

  12.   

    我的字段是这样子的 id,name,ppa,egp,re  我想问下,我insert into 的时候其他字段怎么加入???是这个样子吗? 
    string sql ="insert into patentinfo ("; 
    string sql2 = " values ("; 
    if(File1.Value.Trim().Length!=0) 

    file1 = this.File1.PostedFile.FileName; 
    int nLength1 = file1.Length - file1.LastIndexOf("\\") - 1; 
    file1 = file1.Substring(file1.LastIndexOf("\\") + 1, nLength1); 
    string path1 = Server.MapPath("UpLoad/"); 
    this.File1.PostedFile.SaveAs(path1 + file1); 
    sql+="id,name,ppa,"; 
    sql2+="'"+txtid.Text+"','"+txtname.Text+"','UpLoad/" +file1+ "',"; 

    if(File2.Value.Trim().Length!=0) 

    file2 = this.File2.PostedFile.FileName; 
    int nLength2 = file2.Length - file2.LastIndexOf("\\") - 1; 
    file2 = file2.Substring(file2.LastIndexOf("\\") + 1, nLength2); 
    string path2 = Server.MapPath("UpLoad/"); 
    this.File2.PostedFile.SaveAs(path2 + file2); 
    sql+="egp,re)"; 
    sql2+="'UpLoad/" +file2+ "','"+re.Text+"')"; 

    else 

    sql = sql.Replace(",",")"); 
    sql2 = sql2.Replace(",",")"); 
    } 是这个样子吗?
      

  13.   

    这些如果都是固定的那就写在最上边即可
    string sql ="insert into patentinfo (id,name,re,"; 
    string sql2 = " values ('"+txtid.Text+"','"+txtname.Text+"','"+txtre.Text+"',"; 那两个file的判断里边只要动态拼那两个字段即可.你要判断一下如果两个文件都不选的情况你自己多调试一下.每次测试可以把
    SqlCommand cmd=new SqlCommand (sql+sql2,ConnSql);这里的sql+sql2打印出来一看就知道对不对了.
      

  14.   

    我的re字段是在ppa字段之后。安装你说的报错。还有你说把sql+sql2打印出来。怎么打印???
      

  15.   

    我的re字段是在ppa字段之后。安装你说的报错。还有你说把sql+sql2打印出来。怎么打印???
    ===============================
    在前在后无所谓.只要 insert into table1 (xxx1,xx2) values (xx1,xx2)
    只要第一个括号里的和values后边的括号的顺序对应就行了.打印?你会用vs的调试吗?在那设个断点.调试一下.或是把你后边的
    cmd.ExecuteNonQuery(); 
    ConnSql.Close();
    这两句先注释掉.然后Response.Write(sql+sql2)输出,看看最后拼出来的sql对吗.
      

  16.   

    如果只输入第一个文本框的值和第一个上传控件
    报如下错:insert into patentinfo (pid)re)ppa) values ('品牌')'')'UpLoad/5.doc') 
    像这种情况我要自己拼出正确的来吗?
      

  17.   

    总之上边例子就是一个拼接sql的过程你要根据你的实际需求好好想想怎么拼接合理.自己多动动脑筋:)
    你24楼的sql拼接的有问题.