一 简介
带界面,基于桌面数据库,代码不多,难度也不大,功能也很简单,
就是无意在电脑上发现,怀念一下,呵呵。
2 准备
安装office 2003 access桌面数据库。开发工具vs2010
Friends.mdb放在当前程序执行同一目录。
3 代码
直接展示代码,包括注释和运行界面
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Data.Sql; using System.Data.OleDb; namespace Contact { public partial class MainForm : Form { string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Friends.mdb"; private bool isAdd; private int Fid; public MainForm() { InitializeComponent(); } /// <summary> /// 添加源信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainForm_Load(object sender, EventArgs e) { this.GetFriendInfo(); } /// <summary> /// 从数据库加载所有好友信息 /// </summary> private void GetFriendInfo() { string sql="select Fid,Fname,Fphone,Faddress,extra from friend"; OleDbConnection OC = new OleDbConnection(connStr); OC.Open(); OleDbCommand cmd = new OleDbCommand(sql,OC); try { this.listView.Items.Clear(); OleDbDataReader reader; reader = cmd.ExecuteReader(); while (reader.Read()) { string[] subItems = new string[] { reader.GetInt32(0).ToString(), reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4) }; // ListViewItem it = new ListViewItem(); //it.SubItems.AddRange(subItems); listView.Items.Add(new ListViewItem(subItems)); } reader.Close(); } catch (SqlException SQLEX) { MessageBox.Show(SQLEX.ToString()); //MessageBox::Show(listView); } } /// <summary> /// 取得选中联系人的ID /// </summary> /// <returns></returns> private int getSelectID() { int result; if (this.listView.SelectedItems.Count == 0) { result = 0; } else { ListViewItem temp = this.listView.SelectedItems[this.listView.SelectedItems.Count - 1]; result = Convert.ToInt32(temp.SubItems[0].Text); } return result; } /// <summary> /// 使相关控件启用 /// </summary> private void enableInfo() { this.clearInfo(); this.txtAddress.Enabled = true; this.txtName.Enabled = true; this.txtPhone.Enabled = true; this.btnOK.Enabled = true; this.btnRE.Enabled = true; this.txtName.Focus(); } /// <summary> /// 修改相关控件状态 /// </summary> private void disableInfo() { this.clearInfo(); this.txtAddress.Enabled = false; this.txtName.Enabled = false; this.txtPhone.Enabled = false; this.btnOK.Enabled = false; this.btnRE.Enabled = false; this.btnAdd.Enabled = true; this.btnDel.Enabled = true; this.btnEdit.Enabled = true; } private void clearInfo() { this.txtName.Text = ""; this.txtPhone.Text = ""; this.txtAddress.Text = ""; this.txtExtra.Text = ""; } /// <summary> /// 添加新联系人 /// </summary> /// <param name="_name">姓名</param> /// <param name="_phone">电话</param> /// <param name="_address">地址</param> public void addInfo(string _name, string _phone, string _address,string _extra) { //可以使用Command Parameter来构造sql语句以获得更好的效率和更高的安全性 string sql = "insert into friend (Fname,Fphone,Faddress,extra) values ('"; sql += _name + "','" + _phone + "','" + _address + "','" + _extra + "')"; OleDbConnection OC = new OleDbConnection(connStr); OleDbCommand cmd = new OleDbCommand(sql,OC); //SqlConnection conn = new SqlConnection(connStr); //SqlCommand cmd = new SqlCommand(sql, conn); OC.Open(); cmd.ExecuteNonQuery(); OC.Close(); } /// <summary> /// 修改联系人信息 /// </summary> /// <param name="_id">需要修改的联系人的id</param> /// <param name="_name"></param> /// <param name="_phone"></param> /// <param name="_address"></param> public void changeInfo(int _id, string _name, string _phone, string _address,string str_extra) { string sql = "update friend set Fname = '" + _name + "',Fphone = '" + _phone + "', Faddress = '" + _address + "',extra = '" + str_extra + "'"; sql += " where Fid = " + _id; ////SqlConnection conn = new SqlConnection(connStr); ////SqlCommand cmd = new SqlCommand(sql, conn); OleDbConnection OC = new OleDbConnection(connStr); OleDbCommand cmd = new OleDbCommand(sql, OC); OC.Open(); cmd.ExecuteNonQuery(); OC.Close(); } /// <summary> /// 添加联系人 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAdd_Click(object sender, EventArgs e) { this.enableInfo(); this.btnEdit.Enabled = false; this.btnDel.Enabled = false; this.isAdd = true; } /// <summary> ///修改联系人信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnEdit_Click(object sender, EventArgs e) { if (this.listView.SelectedItems.Count == 0) { MessageBox.Show("请点击选择需要修改的联系人!"); return; } this.enableInfo(); ListViewItem lvi = this.listView.SelectedItems[this.listView.SelectedItems.Count - 1]; this.txtName.Text = lvi.SubItems[1].Text; this.txtPhone.Text = lvi.SubItems[2].Text; this.txtAddress.Text = lvi.SubItems[3].Text; this.txtExtra.Text = lvi.SubItems[4].Text; Fid = Convert.ToInt32(lvi.SubItems[0].Text); this.isAdd = false; this.btnDel.Enabled = false; this.btnAdd.Enabled = false; } /// <summary> /// 删除联系人信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDel_Click(object sender, EventArgs e) { int infoID = this.getSelectID(); if (infoID == 0) { MessageBox.Show("请选中你要删除的那些内容信息!"); return; } try { string sql = "delete friend where Fid = " + infoID; //SqlConnection conn = new SqlConnection(connStr); //conn.Open(); //SqlCommand cmd = new SqlCommand(sql, conn); //cmd.ExecuteNonQuery(); //conn.Close(); OleDbConnection OC = new OleDbConnection(connStr); OleDbCommand cmd = new OleDbCommand(sql, OC); OC.Open(); cmd.ExecuteNonQuery(); OC.Close(); this.GetFriendInfo(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// <summary> /// 本软件版本信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAbout_Click(object sender, EventArgs e) { MessageBox.Show("个人手机通讯录,仅用于演示。\n\n CopyRight CODE", "演示程序", MessageBoxButtons.OK, MessageBoxIcon.Information); } /// <summary> /// 取消按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRE_Click(object sender, EventArgs e) { this.disableInfo(); } /// <summary> /// 确定按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOK_Click(object sender, EventArgs e) { //在执行下面的操作之前你可以对用户提交的信息进行合法验证 //不合法的数据应该拒绝操作 if (this.isAdd) { try { addInfo(this.txtName.Text, this.txtPhone.Text, this.txtAddress.Text,this.txtExtra.Text); MessageBox.Show("成功添加联系人。"); this.GetFriendInfo(); this.disableInfo(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { try { changeInfo(Fid, this.txtName.Text, this.txtPhone.Text, this.txtAddress.Text,this.txtExtra.Text); MessageBox.Show("成功修改联系人信息。"); this.GetFriendInfo(); this.disableInfo(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } }
运行界面(不怎么友好)