C# 在c中插入单引号时出现异常#
我面临着这个问题。当我在文本字段中插入单引号时。在插入时,它给出了该特定字段附近不正确语法的例外情况。为什么?单引号对sqlserver有特殊意义吗C# 在c中插入单引号时出现异常#,c#,sql-server,winforms,exception,C#,Sql Server,Winforms,Exception,我面临着这个问题。当我在文本字段中插入单引号时。在插入时,它给出了该特定字段附近不正确语法的例外情况。为什么?单引号对sqlserver有特殊意义吗 若用户输入的单词像“不”,它是,或者有时错误地在“开始”中输入单引号,那个么它会给出异常。有什么办法来解决这个问题吗?如果单一报价单与sqlserver有问题。。那么如何处理它呢?SQL Server字符串(通常)用单引号括起来,因此如果在插入字符串之前不进行转义,字符串中的单引号将导致错误 单引号只需加倍,因此字符串Will's World将导致
若用户输入的单词像“不”,它是,或者有时错误地在“开始”中输入单引号,那个么它会给出异常。有什么办法来解决这个问题吗?如果单一报价单与sqlserver有问题。。那么如何处理它呢?SQL Server字符串(通常)用单引号括起来,因此如果在插入字符串之前不进行转义,字符串中的单引号将导致错误
单引号只需加倍,因此字符串
Will's World
将导致Will's World
进入数据。SQL Server字符串(通常)用单引号括起来,因此如果在插入字符串之前不转义,字符串中的单引号将导致错误
单引号只需加倍,因此字符串Will's World
将导致Will's World
进入数据。使用而不是字符串串联
这种表达式是您在代码中能做的最糟糕的事情,因为首先您在数据类型转换方面会遇到问题,其次是黑客的opem
string someQuery = "Select * from SomeTbl Where SomeTbl.SomeColumn = '" + tbSomeBox.Text+ "'" ;
用这个代替它
string someQuery = "Select * from SomeTbl Where SomeTbl.SomeColumn = @param";
SqlCommand someCommand = new SqlCommand(someQuery, conn);
someCommand.AddParams("@param",tbSomeBox.Text);
...
希望这有助于使用而不是字符串连接
这种表达式是您在代码中能做的最糟糕的事情,因为首先您在数据类型转换方面会遇到问题,其次是黑客的opem
string someQuery = "Select * from SomeTbl Where SomeTbl.SomeColumn = '" + tbSomeBox.Text+ "'" ;
用这个代替它
string someQuery = "Select * from SomeTbl Where SomeTbl.SomeColumn = @param";
SqlCommand someCommand = new SqlCommand(someQuery, conn);
someCommand.AddParams("@param",tbSomeBox.Text);
...
希望这对您有所帮助,您需要在SQL语句中转义单引号 例如:
'don''t'
您需要在SQL语句中转义单引号 例如:
'don''t'
在SqlServer中,如果要插入带引号的字符串,请在字符串前后使用引号两次。例如,如果您想插入
'Hello'
,那么请像插入''Hello'
一样插入它,前提是要插入的字段具有varchar等字符串数据类型。在SqlServer中,如果要插入带引号的字符串,请在字符串前后使用引号两次。例如,要插入“Hello”
,因此,如果要插入的字段具有varchar等字符串数据类型,请像插入代码那样插入它。向我们展示一些代码,说明如何将参数传递给SQL语句。向我们展示一些代码,说明如何将参数传递给SQL语句。-1因为您提供了一种肮脏的方法来修复问题,SQL参数是解决方案。我是否可以将“quote”转换为十六进制值,就像HTML中我们使用的空间一样,,,与单引号相同,检索时我们必须再次转换?@Johann-我必须举手同意-这是对OPs问题的肮脏修复。带参数的SqlCommand要干净得多。@会像我说的那样吗?@Touseef-甚至不要尝试-可能,但会浪费时间。-1因为你提供了一种肮脏的方法来解决问题,SQL参数就是解决方案。我可以将“quote”转换为它的十六进制值吗,就像在HTML中我们使用的空间一样,,,同单引号一样,在检索时,我们必须再次转换它?@Johann-我必须举手同意-这是对OPs问题的肮脏修复。带参数的SqlCommand要干净得多。@会像我说的那样吗?@Touseef-甚至不要尝试那样-可能,但会浪费时间。-1因为你提供了一种肮脏的方法来解决问题,SQL参数就是解决方案发布问题的人问单引号在SQL Server查询中是否有特殊意义。我回答了那个问题,答案是肯定的。如果每个人都只是使用高级库而不了解幕后发生的事情,那么他们就会丢失重要信息。-1因为您提供了一种肮脏的方法来解决问题,SQL参数就是解决方案发布问题的人问单引号在SQL Server查询中是否有特殊意义。我回答了那个问题,答案是肯定的。如果每个人都只是使用高级库而不了解幕后发生的事情,那么他们就丢失了重要信息。-1因为您提供了一种肮脏的方法来解决问题,SQL参数是解决方案,也是数据检索的基础?我再次将这个替换函数与每个字符串放在一起?不需要再次格式化它。它只用于向数据库发送查询。谢谢Johann。它通过参数工作,不需要手动格式化参数。下面是代码。使用(System.Data.SqlClient.SqlConnection con=new-SqlConnection(“YourConnection string”){con.Open();SqlCommand cmd=new-SqlCommand();string expression=“(newsequentiali'd())”;cmd.CommandType=CommandType.StoredProcedure;cmd.CommandText=“您的存储过程”;cmd.Parameters.Add(“您的参数名”,SqlDbType.VarChar).Value=expression;cmd.Connection=con;使用(IDataReader dr=cmd.ExecuteReader()){if(dr.Read()){}}}@SQL,请用新代码编辑您的答案,我将删除我的反对票-1,因为您提供了一种肮脏的方法来修复问题,SQL参数是解决方案,在检索数据时?我再次将这个替换函数与每个字符串放在一起?不需要再次格式化它。它只用于向数据库发送查询。谢谢Johann。它通过参数工作,不需要手动格式化参数。下面是代码。使用(System.Data.SqlClient.SqlConnection con=new-SqlConnection(“YourConnection string”){con.Open();SqlCommand cmd=new-SqlCommand();string expression=“(newsequentiali'd())”;cmd.CommandType=CommandType.StoredProcedure;cmd.CommandText=“您的存储过程”;cmd.Parameters.Add(“您的参数名”,SqlDbType.VarChar).Value=expression;cmd.Connection=con;使用(IDataRea
using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) {
con.Open();
SqlCommand cmd = new SqlCommand();
string expression = "(newsequentiali'd())";
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Your Stored Procedure";
cmd.Parameters.Add("Your Parameter Name",
SqlDbType.VarChar).Value = expression;
cmd.Connection = con;
using (IDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
}
}
}