如何在字符串中加上单引号

如何在字符串中加上单引号,第1张

从技术上来解释:代码分析器遇到一个单引号,就认为字符文字开始,然后遇到下一个单引号的时候,它不会立即认为字符串结束,而是再读取下一个字符,如果还是单引号,则把这两个单引号解释为字符串中的一个单引号,并且继续分析后面的字符,直到遇到一个单引号后不是单引号,就认为这个字符串结束。文字说明不太容易懂,下面用个例子来看看就容易理解了。把字符串

'abcd'

赋值给字段

cstr:

cstr

=

'''abcd'''.

遇到第一个单引号,字符串开始,接下来又是一个单引号,并一定不代表字符串结束,再读下一个字符,又是单引号,则说明这个字符串的第一个字符是单引号,然后是

a、b、c、d,接下来又是单引号,再读一个字符,还是单引号,说明字符串的第六个字符也是单引号,之后又遇到一个单引号,再读下一个字符,是句号,说明这个字符串结束了,字符串里的字符为

'、a、b、c、d、',一共六个字符。

用SQL语句往数据库某字段(字符型)中插入字符串,但是当该字符串中带有单引号(')时就会出错!因为插入的字符串被从单引号处截断,造成SQL语句的语法错误!

我们在编程当中,经常会遇到在 *** 作数据库时,向表里插入带有单引号的字符串。如果不作处理程序会报错,下面看看我们是怎么的处理它的。

用SQL语句往数据库某字段(字符型)中插入字符串,但是当该字符串中带有单引号(')时就会出错!因为插入的字符串被从单引号处截断,造成SQL语句的语法错误!

解决方法:遍历字符串,把一个(')换成两个(' ')就可以了,在C#里,其实用str.Replace("'", "''")就OK了,这是因为SQL是用两个单引号来代替一个单引号的,下面举个例子:

private void btAdd_Click(object sender, EventArgs e)

{

string chinese = this.txtChinese.Text.Trim()

string english = this.txtEnglish.Text.Trim()

if (chinese == "")

{

MessageBox.Show("请输入中文!")

}

else if (english == "")

{

MessageBox.Show("请输入英文!")

}

else

{

oleConnection1.Open()

string sql = "Select * From info Where chinese='" + CheckString(chinese) + "' And english='" + CheckString(english) + "'"

this.oleCommand1.CommandText = sql

if (null == oleCommand1.ExecuteScalar())

{

string sql1 = "Insert Into info(chinese,english) Values('" + CheckString(chinese) + "','" + CheckString(english) + "')"

oleCommand1.CommandText = sql1

oleCommand1.ExecuteNonQuery()

MessageBox.Show("信息添加成功!", "提示")

this.txtChinese.Text = ""

this.txtEnglish.Text = ""

}

else

{

MessageBox.Show("信息添加失败,中文和英文已经存在了!", "警告")

this.txtChinese.Text = ""

this.txtEnglish.Text = ""

}

oleConnection1.Close()

}

}

private string CheckString(string str)

{

string returnStr = ""

if (str.IndexOf("'") != -1) //判断字符串是否含有单引号

{

returnStr = str.Replace("'", "''")

str = returnStr

}

return str

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11833892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存