我在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,可是上传控件没有办法不选这个问题想了快一天了也没有想出来,请教高手,速解决。
解决方案 »
- 在asp.net中什么叫逻辑删除
- 怎么让textbox 不刷新页面 让其可用JavaScript
- 如何根据输入的URL获得到IP地址
- web dateGrid如何实现添加第一行并同时删除最后一行!
- 如何用C#代码给页面中div的innerhtml赋值?
- windows2003中怎么找不到IIS啊
- 关于GridView绑定值为空的问题
- 为什么datagrid在编辑第二页的第一条记录时总是显示第一页的第一条记录处于编辑状态
- 有没有办法动态改变DataGrid 每列HeaderText显示的文字?
- 你有没有用过cnblogs用源项目?[建立*.*到asp.net的映射]提示错误的扩展名(我的机器是win2003)
- 大家有没有见过利用Inherits 继承DLL文件中的类,没有XXX.aspx.cs文件?
- Repeater选中的单个CheckBox
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拼接的有问题.