C# 从用户在asp.net c中输入的数据向SQL Server数据库添加行#
我经常遇到的错误是运行时说 “-”附近的语法不正确。“-”附近的语法不正确 我使用try-catch只是为了加载页面并显示我的分数,但是标签上也显示了这种不正确的语法,我想知道是否有人可以帮助我解决我的错误C# 从用户在asp.net c中输入的数据向SQL Server数据库添加行#,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我经常遇到的错误是运行时说 “-”附近的语法不正确。“-”附近的语法不正确 我使用try-catch只是为了加载页面并显示我的分数,但是标签上也显示了这种不正确的语法,我想知道是否有人可以帮助我解决我的错误 谢谢。我想surname打断了你的提问。使用方括号,如[Sur Name] 但更重要的是,请使用。这种类型的字符串连接对攻击是开放的。我看到您尝试使用,但从未在查询中声明参数名称 此外,数据可能是SQL Server未来版本中的一个重要问题。您可能还需要与一起使用,例如[DATA] 考虑使用
谢谢。我想
surname
打断了你的提问。使用方括号,如[Sur Name]
但更重要的是,请使用。这种类型的字符串连接对攻击是开放的。我看到您尝试使用,但从未在查询中声明参数名称
此外,数据
可能是SQL Server未来版本中的一个重要问题。您可能还需要与一起使用,例如[DATA]
考虑使用来处理SqlConnection
和SqlCommand
string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection connection = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Data (Name, Sur-Name, Score,Avg) VALUES ('" + fName + "','" + sName + "','" + lblScore.Text + "','" + lblAvg.Text + "');");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Name", fName);
cmd.Parameters.AddWithValue("@Sur-Name", sName);
cmd.Parameters.AddWithValue("@Score", lblScore.Text);
cmd.Parameters.AddWithValue("@Avg", lblAvg.Text);
try
{
connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exc)
{
lblData.Text = exc.Message;
}
finally
{
connection.Close();
}
我认为
surname
打破了你的疑问。使用方括号,如[Sur Name]
但更重要的是,请使用。这种类型的字符串连接对攻击是开放的。我看到您尝试使用,但从未在查询中声明参数名称
此外,数据
可能是SQL Server未来版本中的一个重要问题。您可能还需要与一起使用,例如[DATA]
考虑使用来处理SqlConnection
和SqlCommand
string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection connection = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Data (Name, Sur-Name, Score,Avg) VALUES ('" + fName + "','" + sName + "','" + lblScore.Text + "','" + lblAvg.Text + "');");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Name", fName);
cmd.Parameters.AddWithValue("@Sur-Name", sName);
cmd.Parameters.AddWithValue("@Score", lblScore.Text);
cmd.Parameters.AddWithValue("@Avg", lblAvg.Text);
try
{
connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exc)
{
lblData.Text = exc.Message;
}
finally
{
connection.Close();
}
您正在尝试将串联查询与参数化查询混合使用。始终使用参数化查询,这样可以避免SQL注入
using(SqlConnection connection = new SqlConnection(ConnectionString))
using(SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = @"INSERT INTO [Data] (Name, [Sur-Name], Score, Avg)
VALUES (@Name, @SurName, @Score, @Avg)";
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Name", fName);
cmd.Parameters.AddWithValue("@SurName", sName);
cmd.Parameters.AddWithValue("@Score", lblScore.Text);
cmd.Parameters.AddWithValue("@Avg", lblAvg.Text);
try
{
connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exc)
{
lblData.Text = exc.Message;
}
}
也可以考虑使用语句在<代码>中包含连接和命令对象。
正如@Soner在中提到的,使用方括号表示
数据
和Sur Name
您试图将串联查询与参数化查询混合使用。始终使用参数化查询,这样可以避免SQL注入
using(SqlConnection connection = new SqlConnection(ConnectionString))
using(SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = @"INSERT INTO [Data] (Name, [Sur-Name], Score, Avg)
VALUES (@Name, @SurName, @Score, @Avg)";
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Name", fName);
cmd.Parameters.AddWithValue("@SurName", sName);
cmd.Parameters.AddWithValue("@Score", lblScore.Text);
cmd.Parameters.AddWithValue("@Avg", lblAvg.Text);
try
{
connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exc)
{
lblData.Text = exc.Message;
}
}
也可以考虑使用语句在<代码>中包含连接和命令对象。 正如@Soner在中提到的,使用方括号表示
数据
和Sur Name