1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Drawing; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 using System.Windows.Forms; 9 10 using System.Data; // 引用【AD0.NET】命名空间 11 using System.Data.SqlClient; // sql 12 13 namespace DataBase 14 { 15 public partial class Form1 : Form 16 { 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 22 // 窗体载入 23 private void Form1_Load(object sender, EventArgs e) 24 { 25 //编号, 品名, 规格, 材质, 库存, 价格, 仓库 26 this.lstviewRecordData.Items.Clear(); 27 this.lstviewRecordData.View = View.Details; // lstviewRecordData视图样式: 详细信息 28 this.lstviewRecordData.GridLines = true; // 网格线 29 this.lstviewRecordData.CheckBoxes = true; // 复选框 30 ColumnHeader ch = new ColumnHeader(); 31 ch.Text = "编号"; // 标题 32 ch.TextAlign = HorizontalAlignment.Center; // 居中 33 ch.Width = 50; // 宽度 34 this.lstviewRecordData.Columns.Add(ch); // 添加列头 35 this.lstviewRecordData.Columns.Add("品名", 80, HorizontalAlignment.Center); 36 this.lstviewRecordData.Columns.Add("规格",180, HorizontalAlignment.Center); 37 this.lstviewRecordData.Columns.Add("材质", 80, HorizontalAlignment.Center); 38 this.lstviewRecordData.Columns.Add("库存", 100, HorizontalAlignment.Center); 39 this.lstviewRecordData.Columns.Add("价格", 100, HorizontalAlignment.Center); 40 this.lstviewRecordData.Columns.Add("仓库", 100, HorizontalAlignment.Center); 41 this.lstviewRecordData.FullRowSelect = true; 42 43 } 44 private void btnReadDataBase_Click(object sender, EventArgs e) 45 { 46 lstviewRecordData.Items.Clear(); 47 // 绑定数据库 48 BindDataBase(); 49 } 50 51 /// <summary> 绑定数据库 52 /// 53 /// </summary> 54 private void BindDataBase() 55 { 56 // 连接指定数据库 57 SqlConnection conn = new SqlConnection(); 58 59 /*********************************************************************** 60 * 使用字符串声明连接所需要的信息: 61 * 1. 服务器; 62 * 2. 数据库 ; 63 * 3. 验证: 64 * 3.1 Windows本地验证: Integrated Security = true; 65 * 3.2 SqlServer验证: user id = 登录名; password = 密码 66 ***********************************************************************/ 67 conn.ConnectionString = "Server = 127.0.0.1; DataBase = DuanLaoYeDataBase;"+ 68 " user id = DuanLaoYe; password = 123456"; 69 try 70 { 71 // 打开连接 72 conn.Open(); 73 //MessageBox.Show(conn.State.ToString()); // 测试conn的状态,打开或关闭 74 75 76 // 构造数据库命令操作对象,用于执行T-SQL语句 77 SqlCommand cmd = new SqlCommand(); 78 // 执行操作的T-SQL语句或者存储过程 79 cmd.CommandText = "select * from Steel"; 80 // 执行操作所需要的连接 81 cmd.Connection = conn; 82 83 84 //声明结果集对象 , 用于检索数据 ; 结果集的来自cmd的ExecuteReader()方法 85 SqlDataReader dr = cmd.ExecuteReader(); 86 // 遍历dr数据 , 判断有无数据可读 87 if (dr.HasRows) 88 { 89 // 开始更新数据, 挂起lstviewRecordData的UI绘制 90 this.lstviewRecordData.BeginUpdate(); 91 while (dr.Read()) // 循环读取所有数据 92 { 93 ListViewItem lvi = new ListViewItem(); 94 lvi.Text = dr[0].ToString(); 95 for (int i = 1; i <= 6; ++i ) 96 { 97 lvi.SubItems.Add(dr[i].ToString().Trim()); 98 } 99 this.lstviewRecordData.Items.Add(lvi); 100 } 101 // 结束更新数据, 开始绘制UI(UI一次性绘制) 102 this.lstviewRecordData.EndUpdate(); 103 } 104 else 105 { 106 MessageBox.Show("结果集无数据!"); 107 } 108 } 109 catch (SqlException ex) 110 { 111 MessageBox.Show("数据库操作遇到异常 : " + ex.Message); 112 } 113 finally 114 { 115 // 判断当前的conn连接状态, 如果未关闭 116 if (conn.State != ConnectionState.Closed) 117 { 118 // 则关闭连接 119 conn.Close(); 120 } 121 } 122 } 123 124 private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) 125 { 126 if (DialogResult.Yes == MessageBox.Show("确定删除当前所有选中数据?", "提示", MessageBoxButtons.YesNo)) 127 { 128 this.lstviewRecordData.BeginUpdate(); 129 // 遍历选中项 130 foreach (ListViewItem lvi in lstviewRecordData.SelectedItems) 131 { 132 // 按索引删除选中项 133 //this.lstviewRecordData.Items.RemoveAt(lvi.Index); 134 135 // 按项删除选中项 136 this.lstviewRecordData.Items.Remove(lvi); 137 } 138 this.lstviewRecordData.EndUpdate(); 139 } 140 } 141 } 142 }