Sql server 用户代码中未处理SQL异常

Sql server 用户代码中未处理SQL异常,sql-server,exception-handling,arguments,Sql Server,Exception Handling,Arguments,当我运行下面的代码时,出现以下错误。我正在运行一个用户注册页面,详细信息包括姓名、姓氏、用户名、密码等。“ID”是我的主键。错误:“System.Data.dll中发生“System.ArgumentException”类型的异常,但未在用户代码中处理 其他信息:初始化字符串的格式不符合从索引0开始的规范。” 因为您没有使用参数,所以您的姓氏(lastname)几乎肯定是“O'Sullivan”,请参见这一引文;它导致TSQL语句的格式不正确 如果连接字符串,就会遇到类似这样的问题,并使自己面临

当我运行下面的代码时,出现以下错误。我正在运行一个用户注册页面,详细信息包括姓名、姓氏、用户名、密码等。“ID”是我的主键。错误:“System.Data.dll中发生“System.ArgumentException”类型的异常,但未在用户代码中处理 其他信息:初始化字符串的格式不符合从索引0开始的规范。”


因为您没有使用参数,所以您的姓氏(lastname)几乎肯定是“
O'Sullivan
”,请参见这一引文;它导致TSQL语句的格式不正确

如果连接字符串,就会遇到类似这样的问题,并使自己面临SQL注入攻击。始终使用参数

下面是一个简单的例子:

string sql = "SELECT * from employee where username = @username";

using (SqlConnection connection = new SqlConnection("connection string")
using (SqlCommand command = new SqlCommand(sql, connection))
{
    var userParam = new SqlParameter("username", SqlDbType.VarChar);
    userParam.Value = txtUsername.Text;

    command.Parameters.Add(userParam);

    var results = command.ExecuteReader();
}
有很多关于SO上SQL注入攻击的引用。这里有一个例子:

string sql = "SELECT * from employee where username = @username";

using (SqlConnection connection = new SqlConnection("connection string")
using (SqlCommand command = new SqlCommand(sql, connection))
{
    var userParam = new SqlParameter("username", SqlDbType.VarChar);
    userParam.Value = txtUsername.Text;

    command.Parameters.Add(userParam);

    var results = command.ExecuteReader();
}

为什么您的错误日志代码被注释掉了?让我们看看实际的异常消息请…另外:不要连接字符串:使用参数我在错误记录代码中有错误,所以删除它以继续处理其余的代码,这些错误是:错误CS1519:类、结构或接口成员声明中的无效标记“catch”,错误CS1002:;应为,错误CS1519:无效令牌'('在类、结构或接口成员声明中,错误CS0116:命名空间不能直接包含字段或方法等成员。以下是注释错误日志代码时的完整错误,System.Data.SqlClient.SqlException'类型的异常出现在System.Data.dll中,但未在用户代码中处理。其他信息:In“Sullivan”附近的语法不正确。字符串“”后未闭合的引号)“.P.S我不知道如何使用参数,如果你认为代码会更有效,我会非常感谢你的帮助/建议!嘿,米奇,我已经编辑了代码,希望能在我的项目中正确使用参数。尽管ID是表的第一列中的主键,但我首先使用用户名是否重要?是的,我正在使用用户名。”g该姓氏,但删除了它并使用了“osullivan”和相同的错误。我如何将它们更改为参数??SqlDbType.VarChar,这段代码的SqlDbType部分带下划线解释说它在当前上下文中不存在?正是这些问题让我想知道为什么我要费心回答这些问题……唉。。。