C#WinForm实现增删改查等功能数据库Access.docx
《C#WinForm实现增删改查等功能数据库Access.docx》由会员分享,可在线阅读,更多相关《C#WinForm实现增删改查等功能数据库Access.docx(29页珍藏版)》请在冰豆网上搜索。
C#WinForm实现增删改查等功能数据库Access
C#_WinForm_实现增删改查等功能(Access
用dataGridView控件,显示ResumeTest表中的数据
用Access新建一个表MResume,人事管理表:
ID姓名性别出生日期工作年限证件类型证件号居住地Email手机号码家庭电话图片自我评价
控件的使用:
bindingNavigator(实现分页功能,dataGridView(显示数据
在C#WinForm中有这一个app.config的文件,这个文件的作用可以当作web程序中的webconfig文件。
这里面可以记录数据库连接字符串
Access下数据库连接函数:
publicstaticOleDbConnectionGetConnection(
{
OleDbConnectionconn=null;
stringstrconnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+AppDomain.CurrentDomain.BaseDirectory+"database\\chinabase.mdb;PersistSecurityInfo=True";
try
{
conn=newOleDbConnection(strconnectionString;
}
catch(Exceptionex
{
throwex;
}
returnconn;
}
把数据库中的数据读到dataGridView让这个控件来显示数据:
privatevoidResumeTest_Load(objectsender,EventArgse
{
//手动代码把数据库中的数据显示出来
OleDbConnectionconn=GetConnection(;
stringsqlText="select姓名,性别,出生日期,工作年限,证件类型,证件号,居住地,Email,手机号码,家庭电话,自我评价fromMResumeorderbyidasc";
OleDbCommandcmd=newOleDbCommand(sqlText,conn;
try
{
conn.Open(;
//inti=cmd.ExecuteNonQuery(;
DataTabledt=newDataTable(;
OleDbDataAdapteroda=newOleDbDataAdapter(sqlText,conn;
DataSetds=newDataSet(;
//oda.Fill(dt;
//dataGridView1.DataSource=dt;
oda.Fill(ds,"ds";
dtInfo.Clear(;
//dtInfo=null;
dtInfo=ds.Tables[0];
InitDataSet(dtInfo;//初始化数据
}
catch(Exceptionex
{
MessageBox.Show(ex.ToString(;
}
finally
{
conn.Close(;
}
//设置GridView样式
//SetUpDataGridView(;
dataGridView1.SelectionMode=DataGridViewSelectionMode.FullRowSelect;//使用户能够选择行frommsdn
this.dataGridView1.EditMode=DataGridViewEditMode.EditProgrammatically;//双击不能修改了,这是通过编程的方式来修改单元格内容的
this.ComboxSelect.Items.Add("请选择类别";
this.ComboxSelect.Items.Add("姓名";
this.ComboxSelect.Items.Add("性别";
this.ComboxSelect.SelectedText="请选择类别";
}
增加一条记录模块设计与实现
设计:
点击增加按钮弹出一个窗体,在窗体的文本框中填充数据,点击保存按钮,当前添加数据窗体自动关闭,同时刷新主窗体,更新并显示数据。
实现:
需要在增加按钮事件中传递一个主窗体的指针。
///
///增加
///
///
///
privatevoid增加ToolStripMenuItem_Click(objectsender,EventArgse
{
ResumeAddOrUpdateresumeAdd=newResumeAddOrUpdate(this;
resumeAdd.SaveOrUpdate("Save";//增加操作
resumeAdd.Width=this.Width;//设置宽度,高度
resumeAdd.Height=this.Height;
resumeAdd.Top=this.Top;
resumeAdd.Left=this.Left;
resumeAdd.StartPosition=FormStartPosition.CenterScreen;
resumeAdd.BackColor=Color.White;
resumeAdd.Show(;
}
在ResumeAddOrUpdate中:
privateResumeTestresumeTest;//定义一个父窗体
///
///添加时的操作
///
///
publicResumeAddOrUpdate(ResumeTest_resumeTest//这里需要从父窗体中传递一个this指针
{
InitializeComponent(;
this.resumeTest=_resumeTest;
}
privatevoidResumeAdd_Load(objectsender,EventArgse
{
txtSelfCommand.Multiline=true;//设置成多行多列显示
picPerson.SizeMode=PictureBoxSizeMode.StretchImage;//图片自适应picturebox大小
//lblImage.Text="0";//初始化是否更新图片,为空时不更新图片,不为空时则更新图片
}
///
///增加操作
///
///
///
privatevoidbtnSave_Click(objectsender,EventArgse
{
…………
//手动代码保存数据至数据库
OleDbConnectionconn=GetConnection(;
stringsqlText="insertintoMResume(姓名,性别,出生日期,工作年限,证件类型,证件号,居住地,Email,手机号码,家庭电话,自我评价,图片values(@name,@sex,@datetimes,@years,@cardStyle,@cardNumber,@address,@email,@phoneNumber,@homeNumber,@selftCommand,@timeStamp";
//OleDbTransactiontransaction=null;
OleDbCommandcmd=newOleDbCommand(sqlText,conn;
//transaction=conn.BeginTransaction(;
//cmd.Transaction=transaction;
cmd.Parameters.AddWithValue("@name",name;
cmd.Parameters.AddWithValue("@sex",sex;
cmd.Parameters.AddWithValue("@datetimes",datetimes;
cmd.Parameters.AddWithValue("@years",years;
cmd.Parameters.AddWithValue("@cardStyle",cardStyle;
cmd.Parameters.AddWithValue("@cardNumber",cardNumber;
cmd.Parameters.AddWithValue("@address",address;
cmd.Parameters.AddWithValue("@email",email;
cmd.Parameters.AddWithValue("@phoneNumber",phoneNumber;
cmd.Parameters.AddWithValue("@homeNumber",homeNumber;
cmd.Parameters.AddWithValue("@selftCommand",selftCommand;//timeStamp
cmd.Parameters.AddWithValue("@timeStamp",lblImage.Text;
try
{
conn.Open(;
inti=cmd.ExecuteNonQuery(;
//transaction.Commit(;
if(i>0
{
MessageBox.Show("添加成功!
","提示";
//this.resumeTest.Refresh(;
this.resumeTest.RefreshDataGridView(sender,e;//刷新窗体
this.Close(;
}
/*DataTabledt=newDataTable(;
OleDbDataAdapteroda=newOleDbDataAdapter(sqlText,conn;
oda.Fill(dt;
dataGridView1.DataSource=dt;
*/
}
catch(Exceptionex
{
MessageBox.Show(ex.ToString(;
}
finally
{
conn.Close(;
}
}
///
///检查是否有已经存在相同的名称
///true已经存在相同用户名,不能添加数据
///false不存在相同的用户名,可以添加
///
///
///
publicboolCheckTheSameName(stringname
{
boolresult=false;//
intmcount=0;
OleDbConnectionconn=GetConnection(;
stringsqlText="selectcount(*as结果fromMResumewhere姓名=@name";
OleDbCommandcmd=newOleDbCommand(sqlText,conn;
cmd.Parameters.AddWithValue("@name",name;
try
{
conn.Open(;
//inti=cmd.ExecuteNonQuery(;
OleDbDataReaderdatareader=cmd.ExecuteReader(;
if(datareader.Read(
{
mcount=int.Parse(datareader["结果"].ToString(;
}
if(mcount>0
{
//MessageBox.Show("已经存在相同用户名!
","提示";
result=true;
}
else
{
//MessageBox.Show("不存在相同用户名!
","提示";
result=false;
}
/*DataTabledt=newDataTable(;
OleDbDataAdapteroda=newOleDbDataAdapter(sqlText,conn;
oda.Fill(dt;
dataGridView1.DataSource=dt;
*/
}
catch(Exceptionex
{
MessageBox.Show(ex.ToString(;
result=true;
}
finally
{
conn.Close(;
}
returnresult;
}
更新一条记录模块设计与实现
设计:
点击更新按钮弹出一个窗体(在这里是对dataGridView的一个双击事件,在窗体的文本框中填充数据,点击更新按钮,当前修改数据窗体自动关闭,同时刷新主窗体,更新并显示数据。
实现:
需要在增加按钮事件中传递一个字符串和一个主窗体的指针。
///
///修改
///
///
///
privatevoid修改ToolStripMenuItem_Click(objectsender,EventArgse
{
dataGridView1_DoubleClick(sender,e;//类似于dataGridView的更新操作,也就是双击操作
}
privatevoiddataGridView1_CellMouseDown(objectsender,DataGridViewCellMouseEventArgse
{
//判断如果点击的是鼠标右键
if(e.Button==MouseButtons.Right
{
//判断鼠标点击在数据行上
if(e.RowIndex>=0
{
dataGridView1.ClearSelection(;
dataGridView1.Rows[e.RowIndex].Selected=true;
dataGridView1.CurrentCell=dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
}
}
///
///dataGridview1双击事件,获得某行的信息
///
///
///
privatevoiddataGridView1_DoubleClick(objectsender,EventArgse
{
//selectedRowsButton_Click(sender,e;
Int32selectedRowCount=dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected;
if(selectedRowCount>0
{
Stringstr=string.Empty;
for(inti=0;i{
intselectedRow=dataGridView1.SelectedRows[i].Index;//获得选中的某行
intcolumns=dataGridView1.ColumnCount;
for(intj=0;j{
str+=dataGridView1.Rows[selectedRow].Cells[j].Value.ToString(+",";
}
}
ResumeAddOrUpdateresumeAdd=newResumeAddOrUpdate(str,this;
resumeAdd.SaveOrUpdate("Update";
resumeAdd.Width=this.Width;//设置宽度,高度
resumeAdd.Height=this.Height;
resumeAdd.Top=this.Top;
resumeAdd.Left=this.Left;
resumeAdd.StartPosition=FormStartPosition.CenterScreen;
resumeAdd.BackColor=Color.White;
resumeAdd.Show(;
//MessageBox.Show(str.ToString(,"SelectedRows";
}
}
ResumeAddOrUpdate窗体实现:
///
///增加Or更新
///
///
publicvoidSaveOrUpdate(stringstr
{
if(str.ToLower(.Equals("save"
{
btnSave.Visible=true;
btnUpdate.Visible=false;
}elseif(str.ToLower(.Equals("update"{
btnSave.Visible=false;
btnUpdate.Visible=true;
txtName.Enabled=false;
}
}
///
///更新时的操作
///两个参数的构造函数
///传递一个父窗体
///
///
///
publicResumeAddOrUpdate(stringstr,ResumeTest_resumeTest//这里需要从父窗体中传递一个this指针
{
InitializeComponent(;
this.resumeTest=_resumeTest;
timeStamp=0;//初始化参数
lblImage.Text="0";//初始化是否更新图片,为空时不更新图片,不为空时则更新图片
string[]content=str.Split(',';
txtName.Text=content[0];//姓名
if(content[1].Equals("男"
{
rbtnMale.Checked=true;
}
elseif(content[1].Equals("女"
{
rbtnFemale.Checked=true;
}
dateTimePicker1.Text=content[2].ToString(;
txtYear.Text=content[3].ToString(;
txtCardStyle.Text=content[4].ToString(;
txtCardNumber.Text=content[5].ToString(;
txtAddress.Text=content[6].ToString(;
txtEmail.Text=content[7].ToString(;
txtPhoneNumber.Text=content[8].ToString(;
txtHomeNumber.Text=content[9].ToString(;
txtSelfCommand.Text=content[10].ToString(;
stringstrPictrueBox=getStrOfPictureBox(txtName.Text.Trim(;//根据数据库中生成的图片路径,显示图片
//MessageBox.Show(strPictrueBox,"提示";
if(strPictrueBox.Contains("nophoto.jpg"
{
lblImage.Text="0";//给图片路径字符串赋值
picPerson.Image=Image.FromFile(Application.StartupPath+"\\Image\\nophoto.jpg";
}
else
{
lblImage.Text=strPictrueBox;//给图片路径字符串赋值
picPerson.Image=Image.FromFile(Application.StartupPath+"\\Image\\"+strPictrueBox+".jpg";
}
}
///
///修改操作
///
///
///
privatevoidbtnUpdate_Click(objectsender,EventArgse
{
//手动代码保存数据至数据库
OleDbConnectionconn=GetConnection(;
stringsqlText="UpdateMResumeset性别=@sex,出生日期=@datetimes,工作年限=@years,证件类型=@cardStyle,证件号=@cardNumber,居住地=@address,Email=@email,手机号码=@phoneNumber,家庭电话=@homeNumber,自我评价=@selftCommand,图片=@timeStampwhere姓名=@name";
//OleDbTransactiontransaction=null;
OleDbCommandcmd=newOleDbCommand(sqlText,conn;
//transaction=conn.BeginTransaction(;
//cmd.Transaction=transaction;
cmd.Parameters.AddWithValue("@sex",sex;
cmd.Parameters.AddWithValue("@datetimes",datetimes;
cmd.Parameters.AddWithValue("@years",years;
cmd.Parameters.AddWithValue("@cardStyle",cardStyle;
cmd.Parameters.AddWithValue("@cardNumber",cardNumber;
cmd.Parameters.AddWithValue("@address",address;
cmd.Parameters.AddWithValue("@email",email;
cmd.Parameters.AddWithValue("@phoneNumber",phoneNumber;
cmd.Parameters.AddWithValue("@homeNumber",homeNumber;
cmd.Parameters.AddWithValue("@selftCommand",selftCommand;
cmd.Parameters.AddWithValue("@timeStamp",lblImage.Text;
cmd.Parameters.AddWithValue("@name",name;
try
{
conn.Open(;
inti=cmd.ExecuteNonQuery(;
MessageBox.Show("更新成功!
","提示";
this.resumeTest