お世話になります。
パスワード管理するプログラムを実装しているのですが、
Update部分で落ちてしまい原因がわかりません。
DataGridViewのチェックをつけた、行のみ削除を行いたいです。
エラー 138行目
型 'System.NullReferenceException' のハンドルされていない例外が PassKanriSystem.exe で発生しました
追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10using System.Data.SQLite; 11 12namespace WindowsFormsApplication4 13{ 14 public partial class Itiran : Form 15 { 16 public Itiran() 17 { 18 InitializeComponent(); 19 20 } 21 private void btnsintou_Enter(object sender, EventArgs e) 22 { 23 //新規登録ボタンを押下すると登録画面に遷移 24 Touroku Touroku = new Touroku(); 25 Touroku.Show(); 26 this.Visible = false; 27 } 28 private DataTable datatable = new DataTable(); 29 protected override void OnLoad(EventArgs e) 30 { 31 dataGridView1.DataSource = datatable; 32 base.OnLoad(e); 33 DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn(); 34 dataGridView1.Columns.Add(column); 35 } 36 //テーブルの内容を表示 37 private void buttonkensaku_Click(object sender, EventArgs e) 38 { 39 40 //検索条件がない場合 41 if (txtSiteNm.Text == "") 42 { 43 using (SQLiteConnection con = new SQLiteConnection("Data Source = C:\\Users/Desktop/WindowsFormsApplication4 /myfriend.sqlite3")) 44 45 using (SQLiteDataAdapter adapter = new SQLiteDataAdapter("select * from PASS_KANRI where DEL_FLG = 0", con)) 46 { 47 //データグリッドビューのクリア 48 datatable.Clear(); 49 50 dataGridView1.DataSource = datatable; 51 adapter.Fill(datatable); 52 //DELFLGを非表示に 53 dataGridView1.Columns[7].Visible = false; 54 55 //行の幅を自動で調整する 56 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 57 } 58 } 59 //検索条件がある場合 60 else 61 { 62 string dbConnectionString = "Data Source = C:\\Users/Desktop/WindowsFormsApplication4 /myfriend.sqlite3"; 63 using (SQLiteConnection cn = new SQLiteConnection(dbConnectionString)) 64 { 65 cn.Open(); 66 using (SQLiteTransaction trans = cn.BeginTransaction()) 67 { 68 SQLiteCommand cmd = cn.CreateCommand(); 69 //SELECT文 70 cmd.CommandText = "SELECT * from PASS_KANRI where SiteNm = @SiteNm and DEL_FLG = 0"; 71 72 //パラメータセット 73 cmd.Parameters.Add("SiteNm", System.Data.DbType.String); 74 75 cmd.Parameters["SiteNm"].Value = txtSiteNm.Text; 76 77 //datatableのクリア 78 datatable.Clear(); 79 //datatableに検索結果をセット 80 datatable.Load(cmd.ExecuteReader()); 81 82 dataGridView1.DataSource = datatable; 83 84 dataGridView1.Columns[7].Visible = false; 85 86 trans.Commit(); 87 cn.Close(); 88 //行の幅を自動で調整する 89 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 90 91 } 92 } 93 } 94 } 95 /// <summary> 96 /// 97 /// </summary> 98 /// <param name="sender"></param> 99 /// <param name="e"></param> 100 private void dataGridView1_Validating(object sender, CancelEventArgs e) 101 { 102 103 } 104 105 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 106 { 107 //DataGridViewの内容をコピー 108 Clipboard.SetDataObject(dataGridView1.GetClipboardContent()); 109 } 110 111 private void Itiran_Load(object sender, EventArgs e) 112 { 113 114 } 115 116 private void Itiran_KeyDown(object sender, KeyEventArgs e) 117 { 118 //Enterキーでコントロール遷移 119 if (e.KeyCode == Keys.Enter) 120 { 121 if (e.Shift) 122 { 123 ProcessTabKey(false); 124 } 125 else 126 { 127 ProcessTabKey(true); 128 } 129 } 130 } 131 132 private void Delbtn_Click(object sender, EventArgs e) 133 { 134 MessageBox.Show("削除してもよろしいですか?"); 135 foreach (DataGridViewRow r in dataGridView1.Rows) 136 { 137 //チェックボックスがチェックされているか判定 138 if ((bool)r.Cells[0].Value == true) 139 { 140 //update文 論理削除 141 string dbConnectionString = "Data Source = C:\\Users/Desktop/WindowsFormsApplication4 /myfriend.sqlite3"; 142 using (SQLiteConnection cn = new SQLiteConnection(dbConnectionString)) 143 { 144 cn.Open(); 145 using (SQLiteTransaction trans = cn.BeginTransaction()) 146 { 147 SQLiteCommand cmd = cn.CreateCommand(); 148 //SELECT文 149 cmd.CommandText = "update PASS_KANRI set DEL_FLG = 1"; 150 trans.Commit(); 151 cn.Close(); 152 } 153 } 154 } 155 } 156 } 157 } 158} 159
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/18 11:04