0

編集

コードを変更したので、パラメーターの代わりに [" + Time1 + "] を使用しています。これは初めて機能しますが、時間が 0.5 増加しても false のままです。MessageBox.Show("" + Time1 + ""); を試したときに for ループが機能しています。for ループ内。

for (double Time = time_began_5; Time < time_finished_5; Time = Time + 0.5)
        {
            string Time1 = Time.ToString("0.00");


            try
            {
                SqlConnection cn = new SqlConnection("Data Source=.\\SqlExpress;Initial Catalog=AllensCroft;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework;");

                cn.Open();
                SqlCommand Command = new SqlCommand("INSERT INTO Slots ([Date],[RoomID],[" + Time1 + "]) Values (@date,@room,1)", cn);
                Command.Parameters.AddWithValue("date", date);
                Command.Parameters.AddWithValue("room", rooms_combo.SelectedValue);


                Command.ExecuteNonQuery();


                try
                {
                    cn.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

        }
4

3 に答える 3

2
  1. @3 列目 (時間) の前に があります。
  2. パラメータを追加するときは、@.
  3. 挿入ステートメントで、真をブール値として列に挿入しようとしていtimeます。
SqlCommand Command = new SqlCommand("INSERT INTO Slots (Date,RoomID,time) " + "Values (@date,@room,@time)", cn);

Command.Parameters.AddWithValue("@date", date);
Command.Parameters.AddWithValue("@room", rooms_combo.SelectedValue);
Command.Parameters.AddWithValue("@time", Time);

EDITコメントの後。これを試して:

SqlCommand Command = new SqlCommand("INSERT INTO Slots (Date,RoomID,[" + Time1 + "]) " + "Values (@date,@room,@time)", cn);

Command.Parameters.AddWithValue("@date", date);
Command.Parameters.AddWithValue("@room", rooms_combo.SelectedValue);
Command.Parameters.AddWithValue("@time", true);
于 2013-03-13T19:42:53.207 に答える
0

列リストに変数を含めることはできません。@Time を値リストのどこに true にするかを指定したかったと思います。

編集: 時間を列名として挿入するには、C# 文字列操作を行います。

SqlCommand Command = new SqlCommand("INSERT INTO Slots (Date, RoomID, [" + time + "]) Values (@date, @room, 1)", cn);

再度編集: true は T-SQL キーワードではありません。T-SQL ビット列の値は 1 または 0 です。

ここで、時間をパラメーターとしてクエリに追加したくありません。

于 2013-03-13T19:38:58.707 に答える
0

変数を列名 (@time) としてリストしています


ここで編集:

INSERT INTO Slots (Date, RoomID, --->>> @time <<<--- DANGER WILL ROBINSON、DANGER

これを修正するには、テーブルの列名に変更するか、削除する必要があります。

たとえば、次のようなものです。

INSERT INTO Slots (Date, RoomID, time)

于 2013-03-13T19:39:58.310 に答える