6

ASP.NET アプリケーションと MySQL データベースがあります。データベースからデータを挿入、削除、および表示するクラスを作成します。データベースに接続していますが、データベースにデータを挿入できません。

私のクラスの挿入方法:

public string CreateEntry(string Connectionstring, string mitarbeiter)
{
    connection = new MySqlConnection(Connectionstring);
    try
    {
        var command = connection.CreateCommand();
        command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES ('tom')";
        connection.Open();
        return "Mitarbeiter wurde angelegt";
    }
    catch (Exception ex)
    {
        return ex.Message;
    }
    finally
    {
        connection.Close();
    }
}

Connectionstring正しいです。エラーにはなりませんが、データベースにデータがありません。

私のテーブル名: tb_mitarbeiter 列: ID と Vorname

4

7 に答える 7

11

コマンドを実行するだけです

....
MySqlCommand command = connection.CreateCommand();
command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES ('tom')";
connection.Open();
command.ExecuteNonQuery();
....

mitarbeiterそれがデータベースに設定する必要がある実際の値だと思います。
この場合は、パラメーターを使用してデータを挿入/更新することを忘れないでください

MySqlCommand command = connection.CreateCommand();
command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES (?name)";
command.Parameters.AddWithValue("?name", mitarbeiter);
connection.Open();
command.ExecuteNonQuery();
于 2012-11-28T11:42:15.457 に答える
7

command.ExecuteNonQuery() を呼び出してコマンドを実行するのを忘れました。これは私が通常行う方法です:

public string CreateEntry(string connectionString, string valueToInsert)
{
    var stringToReturn = "";

    try
    {
        using(var connection = new MySqlConnection(connectionString))
        {
            //Open connection
            connection.Open();

            //Compose query using sql parameters
            var sqlCommand = "INSERT INTO table_name (field_name) VALUES (@valueToInsert)";

            //Create mysql command and pass sql query
            using(var command = new MySqlCommand(sqlCommand, connection))
            {
                command.Parameters.AddWithValue("@valueToInsert", valueToInsert);
                command.ExecuteNonQuery();
            }           

            stringToReturn ="Success Message";
        }
    }
    catch(exception ex)
    {
        stringToReturn = "Error Message: " + ex.Message;
    }

    return stringToReturn;
}

留意すべき重要な点がいくつかあります。

  1. 使い捨てオブジェクトを使用してラップします。MySqlConnection の場合、範囲外の場合、接続を適切に閉じて破棄します。
  2. クエリ内で値を渡すときは、SQL パラメーターを使用します。これにより、SQL インジェクションが回避され、保守がはるかに簡単になります。
  3. 個人的には、関数内に 1 つの出口点があるのが好きです。この例では、「stringToReturn」変数は、関数の実行が成功した場合または失敗した場合に返される値を保持します。
于 2012-11-28T12:17:13.877 に答える
1

コマンド use SqlCommand.ExecuteNonQueryを実行していません

try
{
        MySqlCommand command = connection.CreateCommand();
        command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES ('tom')";
        connection.Open();
        command.ExecuteNonQuery();
        return "Mitarbeiter wurde angelegt";
 }
 catch (Exception ex)
 {
      return ex.Message;
 }
 finally
 {
       connection.Close();
 }
于 2012-11-28T11:42:30.120 に答える
1

あなたはこれを書くのを逃しました:-

 ....
 connection.Open();
 command.ExecuteNonQuery();
 ....
于 2012-11-28T11:42:46.040 に答える