英単語帳を作成していて、現在SQL serverデータベースへ値の登録までできたのですが、Update文での値の更新がうまくいかないので質問します。
やりたいことは、データベースよりランダムで行を取得したものを
その行を編集したい時に、UIから編集できるようにしたいです。
一応調べてエラーがで出ないように書けたのですが、データベースが更新されていません。
おかしいところがあれば教えてください。
PlayLabel.cs
1 //接続文字列の初期化はしています。 2 //データベースの更新 新しい4つの値を引数へ入れて更新させる。 3 public void EditRow(string jp, string en, string addi, string audi) 4 { 5 SqlCommand Updcom = new System.Data.SqlClient.SqlCommand(); 6 7 connection.Open(); 8 try 9 { 10 Updcom.Connection = connection; 11 Updcom.CommandType = CommandType.Text; 12 13 //現在の主キーId番号の各列の値を変更する 14 Updcom.CommandText = "UPDATE [Sentence] " + 15 "SET [JpSentence] = @JpSentence, " + 16 "[EnSentence] = @EnSentence, " + 17 "[Addition] = @Addition," + 18 "[AudioLink] = @AudioLink " + 19 "WHERE [Id] = SCOPE_IDENTITY()"; 20 21 Updcom.Parameters.AddWithValue("@jpSentence", en); 22 Updcom.Parameters.AddWithValue("@EnSentence", en); 23 Updcom.Parameters.AddWithValue("@Addition", addi); 24 Updcom.Parameters.AddWithValue("@AudioLink", audi); 25 26 Updcom.ExecuteNonQuery(); 27 } 28 catch (Exception exception) 29 { 30 Console.WriteLine(exception.Message); 31 throw; 32 } 33 finally 34 { 35 connection.Close(); 36 } 37 38 }
データの取り出しは以下のようにしています。
PlayLabel.cs
1 //ランダムで1行のデータを取り出す 2 public void GetRow() 3 { 4 connection.Open(); 5 try 6 { //ランダムでひとつ取り出す 7 string sqlstr = "select top(1) * from Sentence order by NEWID()"; 8 9 SqlCommand com = new SqlCommand(sqlstr, connection); 10 11 //SQLクエリの結果を読み出すSqlDataReader オブジェクトを取得 12 SqlDataReader sdr = com.ExecuteReader(); 13 while (sdr.Read() == true) 14 { 15 //インデクサーに列名を与え値を取得する 16 ID = (int)(DBNull.Value.Equals(sdr["Id"]) ? null : sdr["Id"]); 17 JpSentence = (string)(DBNull.Value.Equals(sdr["JpSentence"]) ? null : sdr["JpSentence"]); 18 EnSentence = (string)(DBNull.Value.Equals(sdr["EnSentence"]) ? null : sdr["EnSentence"]); 19 Addition = (string)(DBNull.Value.Equals(sdr["Addition"]) ? null : sdr["Addition"]); 20 AudioLink = (string)(DBNull.Value.Equals(sdr["AudioLink"]) ? null : sdr["AudioLink"]); 21 } 22 } 23 catch (Exception exception) 24 { 25 Console.WriteLine(exception.Message); 26 throw; 27 } 28 finally 29 { 30 connection.Close(); 31 } 32 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/21 03:11