我在vs2003中一个页面上做了2个上传控件,上传控件file1和上传控件file2。
SQL插入语句:insert into(file1,file2)values('"+file1.value+"','"+file2.value+"')
上传按钮button
当我选好2个上传的文件之后点击button则两条记录都能都插入数据库中。
如果我只想插入一条记录的话,该怎么办?前提是必须有2个上传控件。这个上传控件也不像其他的控件一样,不选的话自动在数据库之中插入NULL,可是上传控件没有办法不选这个问题想了快一天了也没有想出来,请教高手,速解决。
SQL插入语句:insert into(file1,file2)values('"+file1.value+"','"+file2.value+"')
上传按钮button
当我选好2个上传的文件之后点击button则两条记录都能都插入数据库中。
如果我只想插入一条记录的话,该怎么办?前提是必须有2个上传控件。这个上传控件也不像其他的控件一样,不选的话自动在数据库之中插入NULL,可是上传控件没有办法不选这个问题想了快一天了也没有想出来,请教高手,速解决。
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个控件都选择文件,根据string sql="insert into patentinfo (ppa,egp) values('UpLoad/" +file1+ "','UpLoad/" +file2+ "')";
就能够把数据插入到数据库中。但是有的时候只需要点击file1选择文件,插入就报错
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,看看这两的值到底是什么.
我没有试.
string sql = ="insert into patentinfo (";
改成
string sql ="insert into patentinfo (";
把你在aspx页中File1的声明发我看看.
<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>
最终版如下
(你的上传的逻辑我都没看.不知道你写的对不对,但是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();
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";
}
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(",",")");
} 是这个样子吗?
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打印出来一看就知道对不对了.
===============================
在前在后无所谓.只要 insert into table1 (xxx1,xx2) values (xx1,xx2)
只要第一个括号里的和values后边的括号的顺序对应就行了.打印?你会用vs的调试吗?在那设个断点.调试一下.或是把你后边的
cmd.ExecuteNonQuery();
ConnSql.Close();
这两句先注释掉.然后Response.Write(sql+sql2)输出,看看最后拼出来的sql对吗.
报如下错:insert into patentinfo (pid)re)ppa) values ('品牌')'')'UpLoad/5.doc')
像这种情况我要自己拼出正确的来吗?
你24楼的sql拼接的有问题.