求教各位高手帮忙看一下下面的代码,注册页面里的“注册”按钮的Click事件,点击后不能向用户表里插入信息!!!!

sl5536g 2012-04-07 10:46:27
各位大侠,我用 Visual web developer 2005 速成版,链接的是外部sql sever 2005 数据库,里面有张Register表,存放新注册用户信息,在“注册”按钮的click事件里写了代码,但点击注册的时候不能向表里插入数据,求教高手帮忙看一下下面的代码!!!!!!


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class zc : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected bool Check(string text) //判断实现
{
if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||
text.Contains("//") || text.Contains("\\")) //检查字串
{
return true; //返回真
}
else
{
return false; //返回假
}
}

protected void zhc_Click(object sender, EventArgs e)
{
if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox4.Text) ||
Check(TextBox5.Text) || Check(TextBox6.Text)) //判断
{
Label1.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\等,请审核"; //输出信息
}
else
{
try
{
SqlConnection con =
new SqlConnection("server='(local)';database='Register';uid='sa';pwd='sa'"); //建立连接
con.Open(); //打开连接
string strsql = "insert into Register(username)values('" + TextBox1.Text + "')";
string check = "select * from register where username='" + TextBox1.Text + "'"; //创建适配器
SqlDataAdapter da = new SqlDataAdapter(check, con); //创建数据集
DataSet ds = new DataSet(); //填充数据集
da.Fill(ds, "table");
if (da.Fill(ds, "table") > 0) //判断同名
{
Label1.Text = "注册失败,有相同用户名";
}
else
{
SqlCommand cmd = new SqlCommand(strsql, con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
Label1.Text = "注册成功,请牢记您的信息";
}

}
catch
{
Label1.Text = "出现错误信息,请返回给管理员"; //抛出异常
}

}

}
}
...全文
198 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sl5536g 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
else
{
SqlCommand cmd = new SqlCommand(strsql, con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
Label1.Text = "注册成功,请牢记您的信息";
}
如果你的是进入了else就说明是成功的,如果没有进入,你就把具体错误说一下。
[/Quote]


谢了,自己找到解决方法了!很简单的问题
sl5536g 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
为什么说一些编程培训“坑人”呢,只要我们认真想一下

C# code
catch
{
Label1.Text = "出现错误信息,请返回给管理员"; //抛出异常
}

这类代码的业务逻辑,我们就会发现,真正关心自己的金钱和流程到底被如何中招的用户遇到这种情况会彻底抓狂,而编写这些代码的人则是以“我只要一个傻瓜提示”的心态面对这个信息。这对于用户有什么用?这……
[/Quote]


谢谢教诲,培训的确实都是一帮坑人的,我自己找到解决方法了
  • 打赏
  • 举报
回复
为什么说一些编程培训“坑人”呢,只要我们认真想一下
  catch
{
Label1.Text = "出现错误信息,请返回给管理员"; //抛出异常
}

这类代码的业务逻辑,我们就会发现,真正关心自己的金钱和流程到底被如何中招的用户遇到这种情况会彻底抓狂,而编写这些代码的人则是以“我只要一个傻瓜提示”的心态面对这个信息。这对于用户有什么用?这对于程序员有什么用?

这类代码,不可能出现在想真正教会你设计和调试程序的老师那里,只会出现在那种让你套用模板快速骗过用人单位老板的“老师”那里。
  • 打赏
  • 举报
回复
几点意见:

1. 类似于 "insert into Register(username)values('" + TextBox1.Text + "')"; 这类代码,必须写为
"insert into Register(username)values('" + TextBox1.Text.Replace("'","''") + "')";
这样的。这是起码的t-sql语法要求的,t-sql明确规定了字符串常量中如果包括单引号时应该转换为两个单引号。

2. 单纯从界面编程和数据库编程角度来看,凭什么不让人家注册信息包括“<”等符号?就算人家注册时自己起个“╰★`美洋洋☆’”的id也是没有什么不可以的啊,这才叫尊重人家用户的个性选择。所以的程序先不要画蛇添足地去过滤什么字符。

3. 去掉画蛇添足的try...catch...。你出现问题时能够调试吗?你能说出是第多少行代码出错吗?vs调试器会直接定位到出错语句上供你即时跟踪堆栈、查看此时的堆栈上每一个调用入口的各种变量值吗?如果不能,你写try...catch...代码的结果就是丧失了调试能力,不该写try...catch的时候写这个代码就等于自欺欺人。真正捕获异常,只应该在应用程序的表现层最外层,统一处理,既不是在你通常要写代码的地方,而且也不是在DEBUG编译模式下启用(只有在Release模式下才启用)。
IT-Style 2012-04-07
  • 打赏
  • 举报
回复
断点调试一下吧...
暖枫无敌 2012-04-07
  • 打赏
  • 举报
回复
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class zc : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected bool Check(string text) //判断实现
{
if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||
text.Contains("//") || text.Contains("\\")) //检查字串
{
return true; //返回真
}
else
{
return false; //返回假
}
}

protected void zhc_Click(object sender, EventArgs e)
{
if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox4.Text) ||
Check(TextBox5.Text) || Check(TextBox6.Text)) //判断
{
Label1.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\等,请审核"; //输出信息
}
else
{
try
{
SqlConnection con =
new SqlConnection("server=.;database=Register;uid=sa;pwd=sa"); //建立连接 ,不需要单引号,去掉
con.Open(); //打开连接
string strsql = "insert into Register(username) values('" + TextBox1.Text + "')"; //表名Register和数据库名一样的??
string check = "select * from Register where username='" + TextBox1.Text + "'"; //创建适配器
SqlDataAdapter da = new SqlDataAdapter(check, con); //创建数据集
DataSet ds = new DataSet(); //填充数据集
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0) //判断同名
{
Label1.Text = "注册失败,有相同用户名";
}
else
{
SqlCommand cmd = new SqlCommand(strsql, con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
Label1.Text = "注册成功,请牢记您的信息";
}

}
catch
{
Label1.Text = "出现错误信息,请返回给管理员"; //抛出异常
}

}

}
}
huijunliang 2012-04-07
  • 打赏
  • 举报
回复
你确定代码执行到

SqlCommand cmd = new SqlCommand(strsql, con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
Label1.Text = "注册成功,请牢记您的信息";

这里了吗?

debug 一下
觉悟之时 2012-04-07
  • 打赏
  • 举报
回复
protected bool Check(string text) //判断实现
{
if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||
text.Contains("//") || text.Contains("\\")) //检查字串
{
return true; //返回真
}
else
{
return false; //返回假
}
}
感觉你的这个判断有点问题。写成这样的。
if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||
text.Contains("//") || text.Contains("\\")) //检查字串
{
return false; //返回真
}
else
{
return true; //返回假
}
}
觉悟之时 2012-04-07
  • 打赏
  • 举报
回复
else
{
SqlCommand cmd = new SqlCommand(strsql, con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
Label1.Text = "注册成功,请牢记您的信息";
}
如果你的是进入了else就说明是成功的,如果没有进入,你就把具体错误说一下。
ambitionzfx 2012-04-07
  • 打赏
  • 举报
回复
1.在cmd.ExecuteNonQuery(); //执行SQL那 行设置断点,看是否执行了那段代码;


da.Fill(ds, "table");
if (da.Fill(ds, "table") > 0) //判断同名

感觉重复了,对性能有影响;
2. TextBox1 是否设置了长度;设置了长度的话,应该用TRIM去掉空格

3.检查sql 语句是否正确;sqlserver是否成功连接



62,267

社区成员

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

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

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

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