private void Save_Click(object sender, RoutedEventArgs e)//세트 저장 { if (Detect_Fallacy()) { return; //혹시 입력 규칙에 어긋나는지 검사한다. } if (update) //세트 수정의 경우 저장할 때 쓰는 함수가 다르다. { ModifySet_Save(); return; } string str = Set_Title.Text; int i, size = line_list.Count(); using (SQLiteConnection conn = new SQLiteConnection(MainWindow.loc)) { conn.Open(); string query = "CREATE TABLE '" + str + "' (`word` TEXT, `mean` TEXT, `correct` INTEGER, `wrong` INTEGER);";//테이블 생성 SQLiteCommand cmd = new SQLiteCommand(query, conn); try { cmd.ExecuteNonQuery(); } catch (Exception) { Caution caution = new Caution("이미 같은 이름의 세트가 존재합니다."); caution.ShowDialog(); return;//세트 이름을 바꿔오기 전에는 저장이 불가하다. } query = "INSERT INTO `set_name` (name) VALUES('" + str + "');"; cmd.CommandText = query; cmd.ExecuteNonQuery(); for (i = 0; i < size; i++)//세트에 데이터를 넣는다. { query = "INSERT INTO `" + str + "` (word, mean, correct, wrong) VALUES('" + words[line_list[i] - 1].ToString() + "', '" + means[line_list[i] - 1].ToString() + "', 0, 0);"; cmd.CommandText = query; cmd.ExecuteNonQuery(); } } DialogResult = true; }
private bool Detect_Fallacy() { string str = Set_Title.Text; int i, size = line_list.Count(); string w, m; if (str.Contains("\'") || str.Contains("\"") || str.Contains("--")) { Caution c = new Caution("', \", --가 있는지 확인합시다.");//sql 인젝션 방지용 c.ShowDialog(); return(true); } else if (str.Length == 0) { Caution c = new Caution("세트 이름을 비워놓았다니!");//빈칸 방지용 c.ShowDialog(); return(true); } for (i = 0; i < size; i++) { w = words[line_list[i] - 1].ToString(); m = means[line_list[i] - 1].ToString(); if (w.Contains("\'") || w.Contains("\"") || w.Contains("--") || m.Contains("\'") || m.Contains("\"") || m.Contains("--")) { Caution c = new Caution("', \", --가 있는지 확인합시다.");//sql 인젝션 방지용 c.ShowDialog(); return(true); } else if (w.Length == 0 || m.Length == 0) { Caution c = new Caution("빈 곳이 있는지 확인합시다.");//빈칸 방지용 c.ShowDialog(); return(true); } } return(false); }