C#WinForm实现增删改查等功能数据库Access.docx
- 文档编号:30753086
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:29
- 大小:21.41KB
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WinForm 实现 增删 功能 数据库 Access