电话本管理程序(实现增删改查功能)

由于刚开始学习ADO.NET在Winform上的应用,所以程序编写过程中出现了好多的问题。但是现在问题基本上都解决了,所以今天把代码放上来,给想我这样的初学者们一个思路的提示。用到的控件有:TextBox,ComboBox,button,DataGridView

首先,先放上程序运行后的截图:

上代码:

首先还是APP.config文件,这个文件的作用是连接字符串的时候使用,方便了以后的修改 PS:记得添加引用和命名空间,不会的看我上一篇文章

1 <?xml version="1.0" encoding="utf-8" ?>
2 <configuration>
3     <connectionStrings>
4         <add name="connStr" connectionString="Data Source=ZIP-CW\MSSQLSERVER0;Initial Catalog=PhoneNumManager;Integrated Security=True"/>
5     </connectionStrings>
6 </configuration>

然后是Group类,这个类的作用是用在ComboBox选择某项的时候可以获得这项的Id号

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace PhoneBook
 7 {
 8     class Group
 9     {
10         private string pId;
11 
12         public string PId
13         {
14             get { return pId; }
15             set { pId = value; }
16         }
17         private string ptName;
18 
19         public string PtName
20         {
21             get { return ptName; }
22             set { ptName = value; }
23         }
24 
25         public override string ToString()
26         {
27             return ptName;
28         }
29     }
30 }

最后就是整个程序主要的代码了

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.Configuration;
 10 using System.Data.SqlClient;
 11 
 12 namespace PhoneBook
 13 {
 14     public partial class Form1 : Form
 15     {
 16         public Form1()
 17         {
 18             InitializeComponent();
 19         }
 20         
 21         //连接字符串
 22         string conStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
 23 
 24         private void Form1_Load(object sender, EventArgs e)
 25         {
 26             string sql = "select * from [PhoneNum]";
 27             GetPhoneNum(sql);
 28             LoadCbo();
 29             
 30         }
 31 
 32         /// <summary>
 33         /// 执行查询数据库功能的方法
 34         /// </summary>
 35         /// <param name="sql">查询数据库的语句</param>
 36         private void GetPhoneNum(string sql)
 37         {
 38             using (SqlConnection conn = new SqlConnection(conStr))
 39             {
 40                 DataSet ds = new DataSet();
 41                 SqlDataAdapter sda = new SqlDataAdapter(sql, conn); //用于查询数据库,并填充DataSet集;创建DataAdapter数据适配器实例
 42                 sda.Fill(ds);   //填充DataSet集
 43                 dgvPhoneBook.DataSource = ds.Tables[0];
 44             }
 45         }
 46 
 47         /// <summary>
 48         /// 获得执行的SQL语句的方法
 49         /// </summary>
 50         /// <returns>返回拼接好的SQL语句</returns>
 51         private string GetString()
 52         {
 53             //为了简单和易读性的考虑,使用where 1=1
 54             StringBuilder sql = new StringBuilder("select * from [PhoneNum] where 1=1 ");
 55             if (txtName.Text != "")
 56             {
 57                 sql.AppendLine(" and pName like '%" + txtName.Text.Trim() + "%'");
 58             }
 59            
 60             if (txtPhoneNumber.Text != "")
 61             {
 62                 sql.AppendLine(" and pCellPhone like '%" + txtPhoneNumber.Text.Trim() + "%'");
 63             }
 64             //类型转换
 65             Group group = cboGroup.SelectedItem as Group;
 66             if (cboGroup.SelectedItem != null)
 67             {
 68                 if (group.PId == "1")
 69                 {
 70                     sql.AppendLine(" and pTypeId=1");                   
 71                 }
 72                 else if (group.PId == "2")
 73                 {
 74                     sql.AppendLine(" and pTypeId=2");                    
 75                 }
 76                 else if (group.PId == "3")
 77                 {                
 78                     sql.AppendLine(" and pTypeId=3");                    
 79                 }
 80                 else if (group.PId == "4")
 81                 {                  
 82                     sql.AppendLine(" and pTypeId=4");                    
 83                 }               
 84                 
 85             }
 86             return sql.ToString();
 87         }
 88         //查询按钮的响应
 89         private void btnSearch_Click(object sender, EventArgs e)
 90         {            
 91             GetPhoneNum(GetString());
 92         }        
 93         //combox下拉列表选择的事件响应
 94         private void cboGroup_SelectedIndexChanged(object sender, EventArgs e)
 95         {          
 96             GetPhoneNum(GetString());           
 97         }        
 98         //加载Combox
 99         private void LoadCbo()
100         {
101             Group group = new Group();
102             group.PtName = "全部";
103             group.PId = "0";
104             cboGroup.Items.Add(group);
105             cboAddGroup.Items.Add(group);
106 
107             Group group1 = new Group();
108             group1.PtName = "朋友";
109             group1.PId = "1";
110             cboGroup.Items.Add(group1);
111             cboAddGroup.Items.Add(group1);
112 
113             Group group2 = new Group();
114             group2.PtName = "同事";
115             group2.PId = "2";
116             cboGroup.Items.Add(group2);
117             cboAddGroup.Items.Add(group2);
118 
119             Group group3 = new Group();
120             group3.PtName = "同学";
121             group3.PId = "3";
122             cboGroup.Items.Add(group3);
123             cboAddGroup.Items.Add(group3);
124 
125             Group group4 = new Group();
126             group4.PtName = "家人";
127             group4.PId = "4";
128             cboGroup.Items.Add(group4);
129             cboAddGroup.Items.Add(group4);
130         }
131 
132         /// <summary>
133         /// 执行增删改的操作
134         /// </summary>
135         private void BindDgv()
136         {
137             string sql = "select * from [PhoneNum] order by pId desc";
138             using (SqlConnection conn = new SqlConnection(conStr))
139             {
140                 DataTable dt = new DataTable();
141                 SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
142                 sda.Fill(dt);
143                 dgvPhoneBook.DataSource = dt;
144             }
145         }      
146 
147         //加载增删改部分的combox
148         private void LoadAddCbo()
149         {
150             Group group = new Group();
151             group.PtName = "全部";
152             group.PId = "0";
153             cboAddGroup.Items.Add(group);
154 
155             Group group1 = new Group();
156             group1.PtName = "朋友";
157             group1.PId = "1";
158             cboAddGroup.Items.Add(group1);
159 
160             Group group2 = new Group();
161             group2.PtName = "同事";
162             group2.PId = "2";
163             cboAddGroup.Items.Add(group2);
164 
165             Group group3 = new Group();
166             group3.PtName = "同学";
167             group3.PId = "3";
168             cboAddGroup.Items.Add(group3);
169 
170             Group group4 = new Group();
171             group4.PtName = "家人";
172             group4.PId = "4";
173             cboAddGroup.Items.Add(group4);
174         }
175 
176         /// <summary>
177         /// 增加新的数据行
178         /// </summary>
179         /// <param name="sender"></param>
180         /// <param name="e"></param>
181         private void btnAdd_Click(object sender, EventArgs e)
182         {
183             Group group = cboAddGroup.SelectedItem as Group;
184             string sql = string.Format("insert into [PhoneNum](pTypeId, pName, pCellPhone, pHomePhone) values({0},'{1}','{2}','{3}')", group.PId, txtAddName.Text, txtAddPhoneNumber.Text, txtAddHomeNum.Text);
185             GetMethod(sql);
186         }
187 
188         /// <summary>
189         /// 执行增删改数据库的方法
190         /// </summary>
191         /// <param name="sql">要执行的SQL语句</param>
192         private void GetMethod(string sql)
193         {
194             using (SqlConnection conn = new SqlConnection(conStr))
195             {
196                 using (SqlCommand cmd = new SqlCommand(sql, conn))
197                 {
198                     conn.Open();
199                     cmd.ExecuteNonQuery();
200                     BindDgv();
201                 }
202             }
203         }
204 
205         /// <summary>
206         /// 删除选中的数据行
207         /// </summary>
208         /// <param name="sender"></param>
209         /// <param name="e"></param>
210         private void btnDel_Click(object sender, EventArgs e)
211         {
212             int index = 0;
213             string sql = string.Format("delete from [PhoneNum] where pId={0}",dgvPhoneBook[index,dgvPhoneBook.SelectedCells[0].RowIndex].Value);
214             GetMethod(sql);
215         }
216 
217         /// <summary>
218         /// 修改选中的数据行
219         /// </summary>
220         /// <param name="sender"></param>
221         /// <param name="e"></param>
222         private void btnChange_Click(object sender, EventArgs e)
223         {
224             int index = 0;
225             Group group = cboAddGroup.SelectedItem as Group;
226             string sql = string.Format("update [PhoneNum] set pTypeId={0},pName='{1}',pCellPhone='{2}',pHomePhone='{3}' where pId={4}", group.PId, txtAddName.Text, txtAddPhoneNumber.Text, txtAddHomeNum.Text, dgvPhoneBook[index, dgvPhoneBook.SelectedCells[0].RowIndex].Value);
227             GetMethod(sql);
228         }
229 
230       
231 
232         
233     }
234 }

代码写的比较乱,希望大家能看懂

原文地址:https://www.cnblogs.com/daban/p/2636430.html