-2
int dose = Convert.ToInt16(DoseTextBox.Text.ToString());
            try
            {
                SqlCommand AddMed = new SqlCommand("INSERT INTO Medications VALUES(@Medication,@Dose,@manufacture)", mcs);

                AddMed.Parameters.Add("@Medication", SqlDbType.NVarChar).Value = MedName.Text.ToString();
                AddMed.Parameters.Add("@Dose", SqlDbType.Int).Value = dose;
                AddMed.Parameters.Add("@manufacture", SqlDbType.NVarChar).Value = ManuDB.Text.ToString();

                mcs.Open();
                AddMed.ExecuteNonQuery();
                mcs.Close();

                MessageBox.Show("Med Added", "Done!");
            }
            catch (Exception)
            {
                MessageBox.Show("Oops!", "Something went wrong");
            }

私は何か間違ったことをしていますか?Ctrlこの関数の結果は「中程度追加」ですが、クエリを何度実行したり、 +を使用して結果を更新したりしても、投薬テーブルに新しい行がないようです。R

私は何かが足りないのですか?ToString戻り値からメソッドを削除しようとしましたが、それは問題ではありません。私は信じている。ManuDBはメーカーのドロップボックスです。

4

3 に答える 3

1

さらに列がある場合は、3. 別の列。次に、挿入部分は次のようにする必要があると思います。

INSERT INTO Medications(Medication,Dose,manufacture) 
VALUES(@Medication,@Dose,@manufacture)
于 2012-05-03T09:25:51.183 に答える
1

SqlCommand AddMed = new SqlCommand("INSERT INTO Medications VALUES(@Medication,@Dose,@manufacture)", mcs);次のように、疑問点 (?)の @variable を置き換えてみてください。

SqlCommand AddMed = new SqlCommand("INSERT INTO Medications VALUES(?,?,?)", mcs);

AddMed.Parameters.Add("@Medication", SqlDbType.NVarChar).Value = MedName.Text.ToString();
AddMed.Parameters.Add("@Dose", SqlDbType.Int).Value = dose;
AddMed.Parameters.Add("@manufacture", SqlDbType.NVarChar).Value = ManuDB.Text.ToString();
于 2012-05-03T09:26:13.087 に答える
1

最初:tryブロックではなく、finally. これにより、エラーが発生した場合に接続も確実に閉じられます。

2 番目: パラメータにエラーがある可能性があります。AddWithValue代わりに使用して、型をいじってみてください。Medicationテーブルにインクリメント付きの主キーがありますかidentity、または ID を手動で割り当てる必要がありますか? フィールドのデータ型を表示します。

編集:とにかく、エラーが発生しないほど奇妙です。何が返されるかを確認するためにデバッグしましたかExecuteNonQuery(1 である必要があります)? 「ばかげた」質問: 正しいデータベースを使用していますか? おそらく、SQL-Server Express は bin/debug フォルダーにコピーを作成します。MDF ファイルをクリックしてプロパティを確認し、コピー先出力ディレクトリが に設定されていることを確認しますDo Not Copy

于 2012-05-03T09:28:52.940 に答える