• 如何向数据库插入带有单引号(')的字符串?


    • 用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;
              }

      这里为什么要用另一个变量(returnStr)来接收替换后的值呢?不然替换会失效,调用Replace()方法不能改变str本身,string对象虽然是引用类型,但它具有很多值类型特征,比较特殊。

  • 相关阅读:
    『转』VC 工具使用和调试方法
    『轉』WINCE下如何实现发短信
    『转』Fatal error: Call to undefined function curl_init
    『转』WinCE驱动程序的分类
    『轉』Windows CE下的串口通讯类
    『轉』VC 6.0 “fatal error LNK1104: cannot open file "mfc42u.lib"”问题解决
    水晶报表乱码中文乱码问题(收藏)
    水晶报表如何完美导出一个Excel表格(收藏)
    ASP.NET AJAX(开发代号Atlas)重要参考资源大收集
    表格排序
  • 原文地址:https://www.cnblogs.com/zhwl/p/2735364.html
Copyright © 2020-2023  润新知