我在c#win.form中创建了一个用于登录的窗口。我将其连接到数据库sql到名为Table的表。 当我按登录按钮时:
Projects
我有: System.Data.SqlClient.SqlException:'关键字'Table'附近的语法不正确。'
答案 0 :(得分:2)
如果您确实将表命名为Table
。然后,您应该知道Table
也是reserved word in sql,应该将其包装在[Table]
之类的方括号中,以便知道您的意思是表名而不是关键字table
第二,您不应该对查询进行字符串连接,因为它为sql injection attack打开了您的应用程序。您应该使用parameterized queries,可以查询如何编写参数化查询。
另一件事是,您不应将密码以纯文本形式存储在数据库中,而应该对密码进行加密并存储,这样在发生任何信息泄漏的情况下,不会破坏任何人的凭据。请看看at this post as example。
旁注:
另一件事是,您可以添加try
和catch
块来进行异常处理,这样,在发生任何异常的情况下,您的应用程序都不会崩溃,并返回一些有意义的消息来描述可能出错的地方。
答案 1 :(得分:0)
对于桌面应用程序,无需重新设计身份验证过程。
只需让您的数据库表包含Windows用户及其权限的列表即可。
使用Environment.Username获取用户名,并确保表中与该用户名匹配。您甚至不需要给他们登录表格。
使用参数化查询仍然很好。