C# 中不能插入2条记录,求救了

问题描述

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();鉴定完毕。
解决方案三:
修改数据库表为自动增量
解决方案四:
谢谢你了,出现提示“由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次”把表中字段有索引“有(无重复)”的全部设置为“无”,现在可以正常运行了非常感谢

时间: 2024-08-03 18:39:13

C# 中不能插入2条记录,求救了的相关文章

插入一条记录的语句,显示标准表达式中数据类型不匹配。大家帮我看看那里错了?谢谢

问题描述 在Click事件中插入一条记录.其中quesion表中的queNo字段为数字,queTxt为字符.函数如下,执行的时候提示标准表达式中数据类型不匹配.privatevoidaddQueBtn_Click(objectsender,EventArgse){stringqueNo=addQueTxb.Text;stringqueTxt=addQueRichTxb.Text.Trim().ToString();stringsqlstring="INSERTINTOquesion(queNo,

利用hibernate生成表时的同时能不能自动向表中插入一条记录

问题描述 利用hibernate生成表时的同时能不能自动向表中插入一条记录 解决方案 解决方案二:生成后直接跟一条插入语句.

select-SQLServer中如何判断一条记录不能存在并使用其他值代替?

问题描述 SQLServer中如何判断一条记录不能存在并使用其他值代替? 现有表tableA,tableB.tableA有一列为bid,是通过该列跟tableB中的一行记录关联 . 一个存储过程中的语句如下,作用是获取A表中的一些信息,并通过bid获取与其关联的 tableB中的某一行的信息.(另外,tableB中会有一个aid的列,通过该列和tableA中的一条记录对应,一条talbeA中的记录可以对应tableB中多条记录,以最后更新的那条tableB记录为绑定) select tableA

使用jdbc向数据库插入100000条记录

分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试: //1.使用statement插入100000条记录  Java代码   public void exec(Connection conn){      try {       //开始时间      Long beginTime = System.currentTimeMillis();       //设置手动提交       conn.setAutoCommit(

c#-C#向oracle插入多条记录

问题描述 C#向oracle插入多条记录 我需要把这个 richTextBox2中的5条数据,一行一行的插入到oracle中,命令如下: int linecount = richTextBox2.Lines.Length; for (int o = 0; o <= linecount - 1; o++) { string linestr = ""; linestr = richTextBox2.Lines[o]; OracleConnection con = new Oracle

javaweb-探讨个问题:一对一双向关联的表,如何插入一条记录。

问题描述 探讨个问题:一对一双向关联的表,如何插入一条记录. 嗨,大家有空吗?探讨一个问题. 一对一双向关联,要插入一条记录. 举个简单例子.一个班级有一个班主任,一个老师只能任一个班级班主任.(一对一) Teacher表 Class表 id(自增) id(自增) name name classId teacherId 插入一条记录: 思路--> 第一步:先向Teacher插入一条记录.返回新插入的id值.(selectKey) 第二步:再向Class插入一条记录,teacherId=上一步返回

存储-sql 能向表中间插入一条记录吗

问题描述 sql 能向表中间插入一条记录吗 难道只能在表尾插入? 因为现在想实现一个笔记页码的存储,不知如何保证页码号的连续,想使用一条记录来代表一页,使用autoincrement在删除一条记录的时候页码不会自动连续,就想直接不用页码,但是怎么能向表中插入一条记录? 或者其他的实现思路? 解决方案 你的表结构不合理.你希望插入中间,你的数据库的表结构应该类似链表 id preid(上一条记录id) data 解决方案二: 或者还有一个办法,增加一个排序码浮点字段 中间插入,就取两个id差的1/

三种返回mysql 插入一条记录返回该记录id方法

三种返回mysql教程 插入一条记录返回该记录id方法 方法一 id int(11) not null pri key auto_increment,name varchar(12),backup varchar(50) 现在想插入一条记录的同时,返回他的id值(插入时只是插入name和backup字段的值).请问该如何写这条语句.谢谢! 你的担心完全多于. 不需要锁表, 返回的ID肯定是你的,基于当前连接session 自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCRE

MYSQL中取得最后一条记录

在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成"主从表结构",这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后获得自动生成的id,以它为基础插入从表的记录.这里面有个困难,就是插入主表记录后,如何获得它对应的id.通常的做法,是通过"select max(id) from tablename"的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表加以