问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.OleDb;namespaceSubjectTest{publicpartialclassAddQuestion:Form{publicAddQuestion(){InitializeComponent();}//提示选择的答案privatevoidrdoAnswer_Click(objectsender,EventArgse){stringanswer=((RadioButton)sender).Text;MessageBox.Show("您选择了答案"+answer,"",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);}//提示选择的难度privatevoidrdoDifficult_Click(objectsender,EventArgse){stringanswer=((RadioButton)sender).Text;MessageBox.Show("您选择了难度"+answer,"",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);}//窗体加载事件privatevoidAddQuestion_Load(objectsender,EventArgse){//查询科目的SQl语句stringsql="selectSubjectNamefromSubject";try{//创建Command对象OleDbCommandcommand=newOleDbCommand(sql,DBHelper.connection);DBHelper.connection.Open();//执行查询OleDbDataReaderdataReader=command.ExecuteReader();//循环读取记录while(dataReader.Read()){cboSubject.Items.Add(dataReader["SubjectName"].ToString());}//关闭dataReader对象dataReader.Close();}catch(Exceptionex){Console.WriteLine(ex.Message);}finally{DBHelper.connection.Close();}}//关闭事件privatevoidbtnClose_Click(objectsender,EventArgse){this.Close();}//增加按钮事件,向数据库增加试题privatevoidbtnAdd_Click(objectsender,EventArgse){//验证输入if(ValidateInput()){intdifficult=0;//难度intsubjectId=0;//科目编号stringanswer="";//答案//查询科目Id的SQL语句stringsql=string.Format("selectSubjectIDfromSubjectwhereSubjectName='{0}'",cboSubject.Text);try{//查询科目编号OleDbCommandcommand=newOleDbCommand(sql,DBHelper.connection);DBHelper.connection.Open();OleDbDataReaderdataReader=command.ExecuteReader();if(dataReader.Read()){subjectId=(int)dataReader[0];//科目编号}dataReader.Close();//确定难度if(rdoDifficult.Checked){difficult=3;}elseif(rdoNormal.Checked){difficult=2;}elseif(rdoEasy.Checked){difficult=1;}//确定答案if(rdoA.Checked){answer=rdoA.Text;}elseif(rdoB.Checked){answer=rdoB.Text;}elseif(rdoC.Checked){answer=rdoC.Text;}elseif(rdoD.Checked){answer=rdoD.Text;}//向数据库插入记录sql=string.Format("insertintoQuestion(Question,OptionA,optionB,OptionC,OptionD,Answer,Difficulty,SubjectID)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')",txtQuestion.Text.Trim(),txtOptionA.Text.Trim(),txtOptionB.Text.Trim(),txtOptionC.Text.Trim(),txtOptionD.Text.Trim(),answer,difficult,subjectId);//重新指定SQL命令command.CommandText=sql;intresult=command.ExecuteNonQuery();if(result==1){MessageBox.Show("增加记录成功","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);}else{MessageBox.Show("增加记录失败","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);}}catch(Exceptionex){Console.WriteLine(ex.Message);}finally{DBHelper.connection.Close();}//清空试题和选项中的内容txtQuestion.Text="";txtOptionA.Text="";txtOptionB.Text="";txtOptionC.Text="";txtOptionD.Text="";rdoA.Checked=false;rdoB.Checked=false;rdoC.Checked=false;rdoD.Checked=false;rdoDifficult.Checked=false;rdoNormal.Checked=false;rdoEasy.Checked=false;}}//验证用户的输入,成功返回true,失败返回falseprivateboolValidateInput(){if(txtQuestion.Text.Trim()==""){MessageBox.Show("请输入问题!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);txtQuestion.Focus();returnfalse;}if(txtOptionA.Text.Trim()==""){MessageBox.Show("请输入选项A!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);txtOptionA.Focus();returnfalse;}if(txtOptionB.Text.Trim()==""){MessageBox.Show("请输入选项B!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);txtOptionA.Focus();returnfalse;}if(txtOptionC.Text.Trim()==""){MessageBox.Show("请输入选项C!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);txtOptionA.Focus();returnfalse;}if(txtOptionD.Text.Trim()==""){MessageBox.Show("请输入选项D!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);txtOptionA.Focus();returnfalse;}if(rdoA.Checked==false&&rdoB.Checked==false&&rdoC.Checked==false&&rdoD.Checked==false){MessageBox.Show("请选择答案!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);returnfalse;}if(rdoDifficult.Checked==false&&rdoNormal.Checked==false&&rdoEasy.Checked==false){MessageBox.Show("请选择难度!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);returnfalse;}if(cboSubject.Text==""){MessageBox.Show("请选择科目!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);cboSubject.Focus();returnfalse;}returntrue;}}}具体的情况是:编译可以通过,如果原来的是空表,就可以成功添加进一条记录;但是想再添加第二条就不行了,也没有出错的提示表中有一个自动编号的字段,设为主键希望高手帮帮我,都搞了一整天还是看不懂
解决方案
解决方案二:
catch(Exceptionex){Console.WriteLine(ex.Message);}
这里如果除了错,输出了message到控制台,可你的程序是winform阿。要看到错误,请输出到log,或者MessageBox.Show();鉴定完毕。
解决方案三:
修改数据库表为自动增量
解决方案四:
谢谢你了,出现提示“由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次”把表中字段有索引“有(无重复)”的全部设置为“无”,现在可以正常运行了非常感谢