一 简介
带界面,基于桌面数据库,代码不多,难度也不大,功能也很简单,
就是无意在电脑上发现,怀念一下,呵呵。
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);
}
}
}
}
}
运行界面(不怎么友好)