回覆列表
  • 1 # 使用者1465424935672

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

    }

  • 中秋節和大豐收的關聯?
  • 為什麼地球大部分陸地在北半球,而最北邊卻是海洋呢?