帮忙看看我的insert语句为何写不进SQL Server?

Gorrister 2007-10-17 08:54:07
private void Calendar1_SelectionChanged(object sender, System.EventArgs e)
{
txtYear.Text = Calendar1.SelectedDate.Year.ToString();
txtMonth.Text = Calendar1.SelectedDate.Month.ToString();
txtDay.Text = Calendar1.SelectedDate.Date.Day.ToString();
Calendar1.Visible = false;
}

private void btnUpimg_Click(object sender, System.EventArgs e)
{
string fullFileName,saveName;
int typePosition;
fullFileName = this.File1.Value.ToString();
typePosition = fullFileName.LastIndexOf(".");
saveName = fullFileName.Substring(typePosition);

this.File1.PostedFile.SaveAs(Server.MapPath("upfile")+"\\"+txtName.Text+saveName);
imgUp.ImageUrl = "upfile\\"+txtName.Text+saveName;
}

private void btnNext_3_Click(object sender, System.EventArgs e)
{
SqlConnection con = new SqlConnection("server=.;database=login;uid=sa;pwd=sa");
con.Open();

SqlCommand cmd = new SqlCommand("select count(*) from u_Login",con);
int count = Convert.ToInt32(cmd.ExecuteScalar())+1;

string birthDay = txtYear.Text+"-"+txtMonth.Text+"-"+txtDay.Text;//这句是获取生日日期
SqlCommand newCmd = new SqlCommand("insert into u_Login values("+count.ToString()+",'"+txtName.Text+"','"+txtPassword.Text+"','"+txtMail.Text+"','"+birthDay+"','"+imgUp.ImageUrl+"')",con);//这句写入

Response.Write(cmd.ExecuteNonQuery());//每次返回-1
}
...全文
128 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
weir55 2007-10-17
  • 打赏
  • 举报
回复
把SQL语句拷出来
放在SQL查询分析器中执行
查看报错情况。
yudi010 2007-10-17
  • 打赏
  • 举报
回复
最简单的方法把SQL语句拷出来
放在SQL查询分析器中执行
你可以设置断点跟踪
看看参数什么的是否和数据库一致
SaintKaKa 2007-10-17
  • 打赏
  • 举报
回复
sonce8(做金刚那样的男人。)
说的对
cmd对象的comandtext是"select count(*) from u_login"
你再执行ExecuteNonQuery()方法肯定出错
应该是Response.Write(newCmd.ExecuteNonQuery());才对
kyouken2007 2007-10-17
  • 打赏
  • 举报
回复
这种问题一般把sql贴出来执行一下就可以解决了
nb20022 2007-10-17
  • 打赏
  • 举报
回复
好像只执行了CMD
Eray 2007-10-17
  • 打赏
  • 举报
回复
sonce8(做金刚那样的男人。)
观察真仔细,
确实应该是Response.Write(newCmd.ExecuteNonQuery());
而不是Response.Write(cmd.ExecuteNonQuery());


exiori 2007-10-17
  • 打赏
  • 举报
回复
你应该显示一下SQL语句。然后在查询分析器中运行一下。
路人乙e 2007-10-17
  • 打赏
  • 举报
回复
ding ls
sonce8 2007-10-17
  • 打赏
  • 举报
回复

SqlCommand newCmd = new SqlCommand("insert into u_Login values("+count.ToString()+", '"+txtName.Text+" ', '"+txtPassword.Text+" ', '"+txtMail.Text+" ', '"+birthDay+" ', '"+imgUp.ImageUrl+" ')",con);//这句写入

Response.Write(cmd.ExecuteNonQuery());//每次返回-1

你们没看见吗???
它执行的是cmd,而不是newCmd,对象搞错了。
Eray 2007-10-17
  • 打赏
  • 举报
回复
而且采取Convert.ToInt32(cmd.ExecuteScalar())+1;做主键的话。不是不严谨。是根本不可行。
比如记录为
1……
2……
3……
4……

这时把其中任意一条删掉
,count+1得到的值还会是4。会造成数据混乱。
建议用自动标识列。

还有。BirthDay的取法并不严谨。
就算 也不一定保证日期时间型的准确。
建议string Birthday=Convert.ToDateTime(txtYear.Text+"-"+txtMonth.Text+"-"+txtDay.Text).ToString()
如果格式不对,在这一步就可以报出来,而不是到数据库才报。
freeboy827 2007-10-17
  • 打赏
  • 举报
回复
按照以上方法试试肯定能解决
vlysses 2007-10-17
  • 打赏
  • 举报
回复
("insert into u_Login values("+count+", '"+txtName.Text+"', '"+txtPassword.Text+"', '"+txtMail.Text+"', to_date('"+birthDay+"','yyMMDD'), '"+imgUp.ImageUrl+"')"
sonce8 2007-10-17
  • 打赏
  • 举报
回复
Response.Write(cmd.ExecuteNonQuery());

应该是
Response.Write(newCmd.ExecuteNonQuery());
fellowcheng 2007-10-17
  • 打赏
  • 举报
回复
把SQL语句截出来,直接在查询分析器能插入成功吗
hongcha99 2007-10-17
  • 打赏
  • 举报
回复
("+count.ToString()+",

少了''
Eray 2007-10-17
  • 打赏
  • 举报
回复
这一个-1无法判断,也许是字段对应不上,也许是类型不对(少了/多了 '号),也许是长度超限……
追踪
断点
把SQL语句拷出来
放在SQL查询分析器中执行
查看报错情况。
Gorrister 2007-10-17
  • 打赏
  • 举报
回复
我的数据库名为login,表为u_Login
其中字段以及类型为
userID int not null
userName varchar(20) not null
userPassword varchar(20) not null
userMail varchar(40) null
userBirth datetime null
face varchar(100) null
Gorrister 2007-10-17
  • 打赏
  • 举报
回复
谢谢各位的解答~
问题解决了,正是因为newCmd用成cmd引起

另外各位高手介绍的方法我都学习了...获益良多啊...

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧