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の値を取得します.

4

2 に答える 2

6

パラメータ化されたクエリを使用する

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 プロバイダーは、値をデータベース エンジンに正しい方法で渡すように機能します。たとえば、入力テキストの 1 つに一重引用符が含まれている場合、コードは構文エラーで失敗します。また、悪意のあるユーザーがいる場合は、SQL インジェクションのリスクがあります

于 2013-05-17T14:11:09.367 に答える
3

MySQL は true と false を保存しません。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 を渡すことをお勧めします

于 2013-05-17T14:11:19.593 に答える