|
■No89313 (kiku さん) に返信
基盤のForm1の編集ボタン押して、編集画面のForm3に行った後に、 Form3で選択した内容を入力しなおして、 OKボタンを押した際に、 選択した行が、入力しなおしたものに、 更新されてるようにしたいのです。 両方更新するように組んで実行してみたのですが、 ハンドルされていない例外がForm3上でてしまいました。 commandが光ってます。 MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO world.todo_dm(todo, date_time, place, belongings,memo)values('映画の日'' at line 1'
何が違うのか教えてください。
※Form1上の基盤の内容↓
private void Form1_Load(object sender, EventArgs e) { //Form3_loadイベントで取得したidのレコード情報をテキストボックスにセットする txtTodo.Text = str_Todo; txtdate.Text = str_Date_time; txt3place.Text = str_Place; txtBelong.Text = str_Belongings; txt5Memo.Text = str_Memo;
//チェックボックスの設定 DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn(); column.Name = "Check Box"; column.HeaderText = "HT";
//行選択 DataGridViewButtonColumn columnline = new DataGridViewButtonColumn(); columnline.Name = "line"; columnline.HeaderText = "line"; columnline.UseColumnTextForButtonValue = true;
columnline.Text = "編集";
//IDの表示 DataGridViewTextBoxColumn columnId = new DataGridViewTextBoxColumn(); columnId.Name = "ID"; columnId.HeaderText = "ID";
//Todoの表示 DataGridViewTextBoxColumn columnTodo = new DataGridViewTextBoxColumn(); columnTodo.Name = "todo"; columnTodo.HeaderText = "todo";
//Date_timeの表示 DataGridViewTextBoxColumn columnDate_time = new DataGridViewTextBoxColumn(); columnDate_time.Name = "date_time"; columnDate_time.HeaderText = "date_time";
//Placeの表示 DataGridViewTextBoxColumn columnPlace = new DataGridViewTextBoxColumn(); columnPlace.Name = "place"; columnPlace.HeaderText = "place";
//Belongingsの表示 DataGridViewTextBoxColumn columnBelongings = new DataGridViewTextBoxColumn(); columnBelongings.Name = "belongings"; columnBelongings.HeaderText = "belongings";
//memoの表示 DataGridViewTextBoxColumn columnMemo = new DataGridViewTextBoxColumn(); columnMemo.Name = "memo"; columnMemo.HeaderText = "memo";
// Header Textをdatagrip上に表示
dataGrid.Columns.Add(column); dataGrid.Columns.Add(columnline); dataGrid.Columns.Add(columnId); dataGrid.Columns.Add(columnTodo); dataGrid.Columns.Add(columnDate_time); dataGrid.Columns.Add(columnPlace); dataGrid.Columns.Add(columnBelongings); dataGrid.Columns.Add(columnMemo); //DataGridView1にユーザーが新しい行を追加できないようにする dataGrid.AllowUserToAddRows = false;
//DataGridViewの列の幅や行の高さを自動的に調整する dataGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
// DataBase接続文 string conn_str = "DataSource=Localhost;Database=mysql;UserID=root;Password=root";
MySqlConnection conn = new MySqlConnection(conn_str);
// 接続開始 conn.Open();
MySqlCommand command = new MySqlCommand();
// SERECT文設定 // commandtextにクエリーの内容を格納 command.CommandText = "select * from world.todo_dm"; //commandtextのクエリーをdbのクエリーに書いてるイメージ command.Connection = conn; //Readerにクエリーの実行結果を書く MySqlDataReader reader = command.ExecuteReader();
//配列の定義 ArrayList list = new ArrayList();
//テーブル読み込みの条件分岐 //データがある場合 if (reader.HasRows) { while (reader.Read()) { todo_dm_data model = new todo_dm_data(); model.ID = reader["ID"].ToString(); model.todo = reader["todo"].ToString(); model.date_time = reader["date_time"].ToString(); model.place = reader["place"].ToString(); model.belongings = reader["belongings"].ToString(); model.memo = reader["memo"].ToString(); list.Add(model); } } //データがない場合 else { MessageBox.Show("データがありません。"); return; } int row = 0; foreach(todo_dm_data model in list) { dataGrid.Rows.Add(new DataGridViewRow()); model.LoadToView(dataGrid, row); row++;
} }
※Form3上のOKButtonのプログラムの内容↓ private void btnOk_Click(object sender, EventArgs e) { //DataBase接続文 string conn_str = "DataSource=Localhost;Database=mysql;UserID=root;Password=root";
MySqlConnection conn = new MySqlConnection(conn_str); MySqlCommand command = new MySqlCommand(); //接続開始 conn.Open(); //SELECT文設定 command.CommandText = "INSERT INTO world.todo_dm(todo, date_time, place, belongings,memo)values('" + txtTodo.Text + "', '" + txtdate.Text + "', '" + txt3place.Text + "', '" + txtBelong.Text + "','" + txt5Memo.Text + "')"; command.Connection = conn;
//編集後、選択したForm1の欄に更新 command.CommandText = "UPDATE INTO world.todo_dm(todo, date_time, place, belongings,memo)values('" + txtTodo.Text + "', '" + txtdate.Text + "', '" + txt3place.Text + "', '" + txtBelong.Text + "','" + txt5Memo.Text + "')"; command.Connection = conn;
//閉じる→DataGripに移る。 //command.CommandText = "INSERT INTO todo_dm(todo,date_time,place,belongings,memo)values('料理','2018-9-24 17:00','自宅', null); "; command.ExecuteNonQuery(); //閉じる→DataGripに移る。 //command.CommandText = "INSERT INTO todo_dm(todo,date_time,place,belongings,memo)values('料理','2018-9-24 17:00','自宅', null); "; command.ExecuteNonQuery();
this.Close();
> 何がしたいのかわかりません。 > なので、何が正しいか判断できない状況です。 > > 掲示板で質問する場合は最低限下記が必要です。 > > 1.何がしたいのか > 2.実際に実行してみてどうだったか > 3.2でエラーになった場合 > どこの行でなんという内容のエラーが出たのか > そのときの最低限のソースの提示 > 4.2でエラーにはならないが、思った動作にならない場合 > どのように思ったような動作にならないのか > > 今回の場合、下記がわからないです。 > 1.最低限のソース提示 > 2.どの行でエラーになっているのか > 3.そもそも何がしたいのか? > 今回の場合は、DBに情報を反映させたいのか? > 4.DBに情報を反映しないのであるならば > DBの種類や、テーブル構造はどうなっているのか? > > このあたりがクリアにならないと誰も回答できないと思います。 > 質問するためには、相手に伝わるように過不足なく情報を > 提示しないと適切な回答が得られません。 > ※質問はしているが回答が得られない場合には、 > たいていは質問の仕方が悪い場合が多いです。 > > 一度文章を書いたら、投稿する前にもう一度読み直し > 第3者に伝わるのかもう一度考え直してみてください。 > > あまりにもわからなかったので > 小言を書いてしまいましたが、 > ご考慮頂けますと、もっとスムーズに > 事が進むと思います。 > がんばってください。 > >
|