数据库正常但UsersTbl表不显示已创建用户问题求助
问题
用Visual Studio 2022开发项目已有数周,Web端创建用户后可正常登录,但查看数据库的UsersTbl表时,表里没有任何用户数据。优先寻求无需修改代码的解决办法,也可提供相关代码片段。
用户创建相关代码
string fileName = "SratimDB.mdf"; string tableName = "UsersTbl"; string sqlQuery = "select * from " + tableName + " where (username='" + username + "')"; DataTable table = Helper.ExecuteDataTable(fileName, sqlQuery); int len = table.Rows.Count; if (len > 0) { msg += "user by that name already exists"; } else { string sqlInsert = "insert into " + tableName; sqlInsert += " (username, fName, lName, year,city,email,password, gender, prefix, phone, admin, more, movies, books, sports)"; sqlInsert += " values ("; sqlInsert += "N'" + username + "',"; sqlInsert += "N'" + firstName + "',"; sqlInsert += "N'" + lastName + "',"; sqlInsert += "" + year + ",";//int sqlInsert += "N'" + city + "',"; sqlInsert += "N'" + email + "',"; sqlInsert += "'" + psswd + "',"; sqlInsert += "'" + gender + "',"; sqlInsert += "'" + prefix + "',"; sqlInsert += "'" + phone + "',"; sqlInsert += "'False' ,";//admin sqlInsert += "N'" + more + "',"; if (hobby.Contains("movies")) sqlInsert += "'True' ,";//bool else sqlInsert += "'False' ,"; if (hobby.Contains("books")) sqlInsert += "'True' ,"; else sqlInsert += "'False' ,"; if (hobby.Contains("sports")) sqlInsert += "'True' "; else sqlInsert += "'False' "; sqlInsert += ")"; msg = msg + "<br>" + sqlInsert; Helper.DoQuery(fileName, sqlInsert); msg = msg + "<br> משתמש הוגדר בהצלחה<br>"; }
无需修改代码的排查方案
- 检查数据库文件位置:Visual Studio默认会把项目中的MDF文件复制到输出目录(比如
bin\Debug\netX.X或bin\Release\netX.X)。你手动查看的可能是项目根目录下的原数据库文件,而Web程序运行时连接的是输出目录里的副本。去输出目录找到SratimDB.mdf,用SQL Server对象资源管理器打开查看,应该能找到用户数据。 - 验证连接字符串指向:确认项目配置文件(web.config或appsettings.json)中的数据库连接字符串,是否指向你正在查看的数据库文件路径。如果连接的是输出目录的文件,就去对应路径查看数据。
- 检查事务提交情况:如果
Helper.DoQuery方法内部使用了事务但未执行提交操作,会导致数据无法写入。不过你能正常登录,说明登录时读取的是有数据的库,所以这个可能性较低,但可以排查Helper类的实现。
代码优化提示(非必须,但建议)
- 当前代码直接拼接SQL语句,存在严重的SQL注入风险,必须改用参数化查询避免攻击。
- 密码以明文存储,极易泄露用户信息,应使用BCrypt、PBKDF2等哈希算法存储密码的哈希值,而非明文。
内容的提问来源于stack exchange,提问作者Yonatan
相关产品推荐
相关产品推荐

