盗墓笔记小米3D手游:ADO.NET添加数据问题

来源:百度文库 编辑:高考问答 时间:2024/04/18 23:43:00
题目是这样的:创建一个Windows应用程序,用于输入学员信息,"添加"按钮可以输入学员信息,"保存"按钮可将记录插入到Students数据库中.

我在数据库中创建了相应的数据表StudetInfo,并把SNo设为主键.下面的代码执行时(篇幅有限只是部分代码),插入一条数据没有问题,当添加一条以上数据并保存时会出现提示"违反了PRIMARY KEY约束'PK_SNo'.不能在对象'StudentInfo'中插入重复键."插入的多条语句并没有重复的值,为什么会提示这样的错误呢?
小猫道行尚浅,还望各位高手赐教!先谢过了!~`

public class frmStudentInfo : System.Windows.Forms.Form
{
private SqlConnection objSqlConnection;
private SqlDataAdapter objSqlDataAdapter;
private DataSet objDataSet;
private DataTable objDataTable;
private DataRow objDataRow;
private System.ComponentModel.Container components = null;
private void frmStudentInfo_Load(object sender, System.EventArgs e)
{
objSqlConnection=new SqlConnection("server=.;uid=sa;pwd=sa;database=Students;");
//打开连接
objSqlConnection.Open();
//创建数据集
objDataSet=new DataSet();
//创建数据表
objDataTable=new DataTable("StudentsInfo");
objDataSet.Tables.Add(objDataTable);
//创建表结构
DataColumn objSNo=new DataColumn();
objSNo.ColumnName="SNo";
objSNo.AllowDBNull=false;
objDataTable.Columns.Add("SNo",typeof(string));
objDataTable.Columns.Add("SName",typeof(string));
objDataTable.Columns.Add("SCourse",typeof(string));
objDataTable.Columns.Add("SMarks",typeof(float));
this.btnSave.Enabled=false;
}
private void btnAdd_Click(object sender, System.EventArgs e)
{
objDataRow=objDataTable.NewRow();
objDataRow["SNo"]=this.txtStudentNo.Text;
objDataRow["SName"]=this.txtStudentName.Text;
objDataRow["SCourse"]=this.txtStudentCourse.Text;
objDataRow["SMarks"]=float.Parse(this.txtStudentMarks.Text);
objDataSet.Tables["StudentsInfo"].Rows.Add(objDataRow);
this.txtStudentNo.Text="";
this.txtStudentName.Text="";
this.txtStudentCourse.Text="";
this.txtStudentMarks.Text="";
this.btnSave.Enabled=true;
}
private void btnSave_Click(object sender, System.EventArgs e)
{
try
{
objSqlDataAdapter=new SqlDataAdapter("SELECT * FROM StudentInfo",objSqlConnection);
objSqlDataAdapter.InsertCommand=objSqlConnection.CreateCommand();
objSqlDataAdapter.InsertCommand.CommandText="INSERT INTO StudentInfo VALUES('"+objDataRow["SNo"].ToString()+"','"+objDataRow["SName"].ToString()+"','"+objDataRow["SCourse"].ToString()+"','"+float.Parse(objDataRow["SMarks"].ToString())+"')";
foreach(DataRow dr in objDataSet.Tables["StudentsInfo"].Rows)
{
string no=dr["SNo"].ToString();
string str="select sno from studentinfo where sno='"+no+"'";
SqlCommand objSqlCommand=new SqlCommand(str,objSqlConnection);
if(objSqlCommand.ExecuteScalar()==null)
{
objSqlDataAdapter.Update(objDataSet,"StudentsInfo");
MessageBox.Show("已插入行");
}
}
MessageBox.Show("已插入所有行");
this.btnSave.Enabled=false;
}
catch(SqlException ex)
{
MessageBox.Show(ex.Message);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}