得到错误,同时通过文本框的数据存储在SQL Server 2005中(Getting error w

2019-07-29 23:36发布

我通过文本框和按钮存储在SQL Server 2005中的数据(约1500个字)。 我使用这个代码。

protected void Button1_Click(object sender, EventArgs e)
{
    conn.Open();
    String query = String.Format("insert into try (data,sno) values ('{0}',22)",TextBox1.Text);
    SqlCommand cmd = new SqlCommand(query, conn);
    cmd.ExecuteNonQuery();
    Label1.Text = "submitted";
    conn.Close();
}

我有列'data'数据类型的'char(4000)'

问题是,当我存储第一段(约1500个字),它成功地存储。 但是,当我保存的另一段(约1500字),它给我的错误。

“附近的“字符串后闭合的引号‘22)’有语法错误。”

问题是什么 ??

Answer 1:

使用参数

String query = "insert into try (data,sno) values (@data,22)"; 
SqlCommand cmd = new SqlCommand(query, conn); 
cmd.Parameters.AddWithValue("@data", TextBox1.text);
cmd.ExecuteNonQuery(); 

通过这种方式,你不必担心单引号的文本中的存在和,最重要的事情,你避免SQL注入攻击的攻击



Answer 2:

String.Format不会逃脱适当的输入字符串在SQL语句中使用,这将导致错误和严重的安全漏洞 。

您应该使用参数化查询这是专门为解决这个问题。



Answer 3:

这听起来像是你有一个'或多个' S,在TextBox1.Text 。 您将需要替换所有单引号双。

String query = String.Format("insert into try (data,sno) values ('{0}',22)",Replace(TextBox1.Text,"'","''")); 

然而,这种方法会打开你到SQL注入攻击。 我建议你使用存储过程,如下所示:

SqlCommand cmd = new SqlCommand(query, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spInsertDataIntoTry";
cmd.Parameters.AddWithValue("@data", TextBox.Text);
cmd.ExecuteNonQuery();

否则,你可以使用参数像其他人所说的。



Answer 4:

请问您的文本中包含'信? 如果是的话那么它是打破INSERT查询。

如果您想尝试插入下面的文字:

你好

然后将查询应该是这样的:

insert into try (data,sno) values ('Hello' there,22)

这会导致不正确的查询。

这不是查询应该做的方式,因为它会导致安全问题(阅读更多: SQL注入 ),你应该使用参数化查询 。



Answer 5:

“附近的“语法错误 - 这表明你的SQL语句是错的我猜您输入的内容可能包含SQL Server的关键字,因此请检查您的第2段没有任何关键词,如“'”。
例如:
第二段是:天气如何? 这很酷!!!!!!!
这样的SQL语句是:插入试(数据,SNO)值(22“天气如何它很酷!!!!!!!?”)
它会出现接近的“异常不正确的语法



文章来源: Getting error while store data in sql server 2005 through textbox