Study/C#(Window programming)
DB연동하기(MySQL에 기록 저장하기)
Answer Choi
2015. 9. 2. 14:52
반응형
한동안 컴터도 포맷하고, MySQL때문에 시간을 많이 버렸네요 ㅠ
이번에는 DB에 기록들을 저장해 보겠습니다.
전체적인 모습은 위와 같습니다.
DB에서 datetimepicker로 선택된 날짜의 데이터를 가져와 뿌려줍니다.
기본적으로 오늘 날짜를 가져오게 하였습니다.
1 | dateTimePicker1.Value = DateTime.Now; | cs |
DB를 가져오는 방법으로는 동기와 비동기 2가지 방식이 있는데 비동기 방식을 선택하였습니다.
먼저 DB의 구조입니다.
schema는 test이며, table은 answertest입니다.
총 4개의 column이 있고, id는 자동으로 생성되는 primary key이고, 총 저장할 건 No, Record, Date입니다.
1 2 3 4 5 6 7 8 | String strCon = "Server=localhost;Database=test;Uid=test;Pwd=;"; DataSet ds = new DataSet(); string sql = "SELECT * FROM answertest where date like '"+date+"%'"; using(MySqlConnection conn=new MySqlConnection(strCon)) { MySqlDataAdapter adpt = new MySqlDataAdapter(sql, conn); adpt.Fill(ds, "answertest"); } | cs |
MySQL에 MySqlConnection으로 접속 하고, MySqlDataAdapter를 통해 DataSet에 저장을 합니다.
Line 1 : MySQL에 접근을 하기위한 정보들입니다.
Line 3 : like를 쓴 이유는 실제 데이터가 저장될때 시간까지 저장되는데 날짜로 가져와야 하기 때문에 like를 썼습니다.
위와 같이 실행을 하고나면 ds에 쿼리한 DB정보가 저장됩니다.
이 데이터는 foreach문으로 listview에 뿌려줍니다.
1 2 3 4 5 6 7 | foreach(DataRow r in ds.Tables[0].Rows) { ListViewItem lv = new ListViewItem(r["no"].ToString()); lv.SubItems.Add(r["record"].ToString()); lv.SubItems.Add(r["date"].ToString()); listView2.Items.Add(lv); } | cs |
DB에 저장은 어플리케이션에서 기록버튼을 누를때마다 DB에 insert하도록 했습니다.
1 2 3 4 5 6 | using (MySqlConnection conn = new MySqlConnection(strCon)) { conn.Open(); MySqlCommand cmd = new MySqlCommand("INSERT INTO answertest (no,record,date) VALUES ("+recordCnt+",'"+timerText.Text+"','"+dateTimeText.Text.ToString()+"')", conn); cmd.ExecuteNonQuery(); } | cs |
반응형