源码来自
http://www.veryhuo.com/down/html/35724.html
首先用SharpDevelop 5.1打开该工程,出现下图错误;该项目是早期.net 2003生成;SharpDevelop 5.1无法打开;
下图是.sln文件,修改第一行的8.00为10.00;再打开项目;
打开出错;
下面用VS2010学习版打开,转换项目后,打开了;
运行,出现下图错误;未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序;
错误的详细信息;
根据资料,需要修改生成的平台为X86;
但是项目的属性,生成,平台,这个地方的选项只有一个 Any CPU;可能是因为用的VS学习版本;
下面再用SharpDevelop打开升级转换后的工程;可以打开;
运行,出现下图错误;
修改目标CPU为x86;
运行起来;主界面;
信息浏览界面;
添加记录界面;
修改记录窗体;
下面看下其增删改的主要代码;
更新信息;
先把选定记录填充到文本框,然后显示窗体,代码如下;
private void btModify_Click(object sender, System.EventArgs e)
{
if (dataGrid1.DataSource != null || dataGrid1[dataGrid1.CurrentCell] != null)
{
studentModify = new StudentModify();
studentModify.textID.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim();
studentModify.textName.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][1].ToString().Trim();
studentModify.comboSex.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][2].ToString().Trim();
studentModify.textNum.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][3].ToString().Trim();
studentModify.textMajor.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][4].ToString().Trim();
studentModify.date1.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][5].ToString().Trim();
studentModify.textTeacher.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][6].ToString().Trim();
studentModify.textRemark.Text=ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][7].ToString().Trim();
studentModify.ShowDialog();
}
else
MessageBox.Show("没有指定学生信息!","提示");
}
点击确定按钮进行更新;
private void btAdd_Click(object sender, System.EventArgs e)
{
if ((textName.Text.Trim()=="") || (textID.Text.Trim()=="") || textNum.Text.Trim()=="")
MessageBox.Show("提示","请输入完整的课程信息");
else
{
oleConnection1.Open();
string sql1="select * from studentinfo where SID<>'"+textID.Text.ToString()+"' and SNum='"+textNum.Text.ToString()+"'";
oleCommand1.CommandText = sql1;
if (null!=oleCommand1.ExecuteScalar())
MessageBox.Show("身份证号发生重复","提示");
else
{
string sql2="update studentinfo set SName='"+textName.Text.Trim()+"',SRemark='"+textRemark.Text.Trim()+"',"+
"SSex='"+comboSex.Text.Trim()+"',SBirth='"+date1.Text.Trim()+"',SNum='"+textNum.Text.Trim()+"'"+
" where SID='"+this.textID.Text.Trim()+"'";
oleCommand1.CommandText=sql2;
oleCommand1.ExecuteNonQuery();
MessageBox.Show("学生信息修改成功","提示");
this.Close();
}
oleConnection1.Close();
}
}
先检查是否有身份证重复;然后用填写的内容生成SQL update语句,用命令对象的ExecuteNonQuery方法执行update语句;
添加信息;
private void btAdd_Click(object sender, System.EventArgs e)
{
if (comboMajor.Text.Trim()==""||textName.Text.Trim()==""||comboSex.Text.Trim()==""||textID.Text.Trim()==""||textNum.Text.Trim()=="")
MessageBox.Show("请填写完整信息","提示");
else
{
oleConnection1.Open();
string sql;
sql="select * from studentinfo where SID='"+textID.Text.ToString()+"' or SNum='"+textNum.Text.ToString()+"'";
OleDbCommand cmd=new OleDbCommand(sql,oleConnection1);
if (null==cmd.ExecuteScalar())
{
sql="insert into studentinfo (MName,SName,SBirth,SNum,SRemark,SID,SSex,TID) values ('"+comboMajor.Text.Trim()+"',"+
"'"+textName.Text.Trim()+"','"+date1.Text.Trim()+"','"+textNum.Text.Trim()+"','"+textRemark.Text.Trim()+"',"+
"'"+textID.Text.Trim()+"','"+comboSex.Text.Trim()+"','"+comboTeacher.SelectedValue.ToString().Trim()+"')";
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("学生添加成功","提示");
clear();
}
else
MessageBox.Show("身份证号或学号相同","提示");
oleConnection1.Close();
}
}
首先检查是否有身份证重复;然后用填写的内容生成SQL insert into 语句,用命令对象的ExecuteNonQuery方法执行;
删除信息;
private void btDel_Click(object sender, System.EventArgs e)
{
if (dataGrid1.CurrentRowIndex>=0 && dataGrid1.DataSource != null && dataGrid1[dataGrid1.CurrentCell] != null)
{
string sql="delete * from studentinfo where SID='"+ds.Tables["student"].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim()+"'";
oleConnection1.Open();
oleCommand1.CommandText = sql;
oleCommand1.ExecuteNonQuery();
MessageBox.Show("删除学生'"+ds.Tables["student"].Rows[dataGrid1.CurrentCell.RowNumber][1].ToString().Trim()+"'成功","提示");
oleConnection1.Close();
}
else
MessageBox.Show("没有指定学生信息!","提示");
}
先判断DataGrid是否有选定信息;
然后根据选中的记录生成SQL delete语句,用命令对象的ExecuteNonQuery()方法执行;
delete语句的SID等于DataGrid当前行的第一列的值,即学号;
看下该项目的表的情况;