2013-05-17 29 views
1
private void button1_Click(object sender, EventArgs e) 
    { 
     // Início da Conexão com indicação de qual o servidor, nome de base de dados e utilizar 

     /* É aconselhável criar um utilizador com password. Para acrescentar a password é somente 
     necessário acrescentar o seguinte código a seguir ao uid=root;password=xxxxx*/ 

     mConn = new MySqlConnection("Persist Security Info=False; server=localhost;database=FichasReparacao;uid=root"); 

     // Abre a conexão 
     mConn.Open(); 

     //Query SQL 
     MySqlCommand command = new MySqlCommand("INSERT INTO Cliente (nome, email, telefone, blacklist)" + 
     "VALUES('" + nome_cli.Text + "','" + email_cli.Text + "','" + telefone_cli.Text + "','" + false + "')", mConn); 

     //Executa a Query SQL 
     command.ExecuteNonQuery(); 

     // Fecha a conexão 
     mConn.Close(); 

     //Mensagem de Sucesso 
     MessageBox.Show("Gravado com Sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 

下面是完整的按鈕代碼,我沒有收到任何錯誤消息.. 我嘗試使用一個變量用假/真值,但沒有,我總是獲得0值。C#MYSQL - 我不能插入一個布爾值

+1

你有任何錯誤信息或異常?顯示完整的代碼。此外,請注意SQL注入。始終使用參數化查詢。 –

+2

更改插入查詢以利用參數,而不是爲潛在的初始者SQL注入設置自己。提供模式和或表格定義(如果可能)讓我們知道該字段的實際數據類型 – MethodMan

+0

否,沒有收到任何錯誤消息。 –

回答

5

使用參數化查詢

MySqlCommand command = new MySqlCommand("INSERT INTO Cliente " + 
         "(nome, email, telefone, blacklist)" + 
         "VALUES(@nome, @email, @tel, @bl)"; 
command.Parameters.AddWithValue("@nome",nome_cli.Text); 
command.Parameters.AddWithValue("@email", email_cli.Text); 
command.Parameters.AddWithValue("@tel", telefone_cli.Text); 
command.Parameters.AddWithValue("@bl", 0); 
command.ExecuteNonQuery(); 

這樣淨框架和MySQL工作的ADO.NET提供給您的值傳遞給數據庫引擎以正確的方式。例如,如果其中一個輸入文本包含單引號,則代碼將失敗並顯示語法錯誤。而且,如果你有一個惡意用戶,你可能一個Sql Injection

2

的MySQL不存儲真假,背後BOOLEAN數據類型是TINYINT(1)

Bool, Boolean: These types are synonyms for TINYINT(1). A value of zero is considered false. Non-zero values are considered true. 

我建議橫穿0