You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET项目点击注册按钮后数据未存入SQL Server数据库求助

问题修复方案

1. 首要修复:数据库连接字符串拼写错误

你web.config里的Integrated Security被误写为Integerated,多了一个字母e,这会直接导致数据库连接失败,是数据无法写入的核心原因。
修复后的连接字符串配置:

<add name="con" connectionString="Data Source=PROBOOK-HP\SQLEXPRESS;Initial Catalog=ebookDB;Integrated Security=true" />

2. 修复checkMemberExists方法逻辑漏洞

该方法中con.Close()和提示代码写在了return语句之后,永远不会执行,同时存在SQL注入风险、数据库连接资源未主动释放的问题。
优化后的代码:

bool checkMemberExists()
{
    try
    {
        using (SqlConnection con = new SqlConnection(strcon))
        {
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            // 改用参数化查询避免SQL注入风险
            SqlCommand cmd = new SqlCommand("SELECT * FROM member_master_tabel WHERE member_id=@memberId", con);
            cmd.Parameters.AddWithValue("@memberId", TextBox8.Text.Trim());
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt.Rows.Count >= 1;
        }
    }
    catch (Exception ex)
    {
        Response.Write("<script>alert('" + ex.Message + "');</script>");
        return false;
    }
}

3. 日期格式适配修复

SQL Server的date/datetime类型字段和字符串格式可能存在不兼容,建议将生日参数转为DateTime类型后再传入,将signUpNewMember方法中对应的参数代码修改为:

cmd.Parameters.AddWithValue("@dob", DateTime.Parse(TextBox2.Text.Trim()));

可额外增加日期合法性校验,避免用户输入非法格式触发报错。

4. 资源释放优化

所有数据库操作相关对象建议套上using语句,无需手动调用Close即可自动释放资源,避免数据库连接泄漏,优化后的signUpNewMember方法:

void signUpNewMember()
{
    try
    {
        using (SqlConnection con = new SqlConnection(strcon))
        {
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            SqlCommand cmd = new SqlCommand("INSERT INTO member_master_tabel(full_name,dob,contact_no,email,state,city,pincode,full_address,member_id,password,account_status)" +
                     "VALUES(@full_name,@dob,@contact_no,@email,@state,@city,@pincode,@full_address,@member_id,@password,@account_status)", con);
            cmd.Parameters.AddWithValue("@full_name", TextBox1.Text.Trim());
            cmd.Parameters.AddWithValue("@dob", DateTime.Parse(TextBox2.Text.Trim()));
            cmd.Parameters.AddWithValue("@contact_no", TextBox3.Text.Trim());
            cmd.Parameters.AddWithValue("@email", TextBox4.Text.Trim());
            cmd.Parameters.AddWithValue("@state", DropDownList1.SelectedItem.Value);
            cmd.Parameters.AddWithValue("@city", TextBox6.Text.Trim());
            cmd.Parameters.AddWithValue("@pincode", TextBox7.Text.Trim());
            cmd.Parameters.AddWithValue("@full_address", TextBox5.Text.Trim());
            cmd.Parameters.AddWithValue("@member_id", TextBox8.Text.Trim());
            cmd.Parameters.AddWithValue("@password", TextBox9.Text.Trim());
            cmd.Parameters.AddWithValue("@account_status", "pending");

            cmd.ExecuteNonQuery();
        }
        Response.Write("<script>alert('注册成功,请前往登录页。');</script>");
    }
    catch (Exception ex)
    {
        Response.Write("<script>alert('" + ex.Message + "');</script>");
    }
}

其他排查注意事项

  • 确认数据库表名member_master_tabel拼写正确,不少场景下会将table误写为tabel
  • 确认表字段的类型、长度和传入内容匹配,例如手机号如果用int类型存储会因超出最大值报错,建议改为varchar类型
  • 增加表单校验逻辑,避免用户选择下拉框默认的Select选项就提交
  • 生产环境不要明文存储密码,需使用加盐哈希算法加密后再存入数据库

内容的提问来源于stack exchange,提问作者L PATEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:27:04