问题描述
图在左边的,代码如下,里面的正确选项则C都选中C的时候会弹出"成功",但是你马上去点A或者B或者C的时候也会弹出成功,请问这个怎么解决呀usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceWindowsApplication2{publicpartialclassForm1:Form{privateSqlConnectiontion;privateSqlCommandand;privatestringsql;privateSqlDataReaderrd;privateintsum=0;publicForm1(){InitializeComponent();}privatevoidradioButton1_CheckedChanged(objectsender,EventArgse){//tion=newSqlConnection("server=.;database=ddt;uid=sa;pwd=");sql="select*fromnamewherename='"+this.radioButton1.Text+"'";try{tion.Open();and=newSqlCommand(sql,tion);rd=and.ExecuteReader();if(rd.Read()){MessageBox.Show("成功");sum=sum+25;}}catch(SqlExceptionex){MessageBox.Show(ex.Message);}finally{tion.Close();rd.Close();and.Dispose();}}privatevoidForm1_Load(objectsender,EventArgse){tion=newSqlConnection("server=.;database=ddt;uid=sa;pwd=");//tion.Open();}privatevoidradioButton2_CheckedChanged(objectsender,EventArgse){//tion=newSqlConnection("server=.;database=ddt;uid=sa;pwd=");sql="select*fromnamewherename='"+this.radioButton2.Text+"'";try{tion.Open();and=newSqlCommand(sql,tion);rd=and.ExecuteReader();if(rd.Read()){MessageBox.Show("成功");sum=sum+25;}}catch(SqlExceptionex){MessageBox.Show(ex.Message);}finally{tion.Close();rd.Dispose();and.Dispose();}}privatevoidradioButton3_CheckedChanged(objectsender,EventArgse){//tion=newSqlConnection("server=.;database=ddt;uid=sa;pwd=");sql="select*fromnamewherename='"+this.radioButton3.Text+"'";try{tion.Open();and=newSqlCommand(sql,tion);rd=and.ExecuteReader();if(rd.Read()){MessageBox.Show("成功");sum=sum+25;}}catch(SqlExceptionex){MessageBox.Show(ex.Message);}finally{tion.Close();}}privatevoidradioButton4_CheckedChanged(objectsender,EventArgse){//tion=newSqlConnection("server=.;database=ddt;uid=sa;pwd=");sql="select*fromnamewherename='"+this.radioButton4.Text+"'";try{tion.Open();and=newSqlCommand(sql,tion);rd=and.ExecuteReader();if(rd.Read()){MessageBox.Show("成功");sum=sum+25;}}catch(SqlExceptionex){MessageBox.Show(ex.Message);}finally{tion.Close();rd.Close();and.Dispose();}}privatevoidbutton1_Click(objectsender,EventArgse){this.label1.Text="你的成绩是"+sum+"分";}}}
解决方案
解决方案二:
什么意思?代码中有四句MessageBox.Show("成功");
解决方案三:
需求,你的需求是什么呢写了四段重复的代码,为什么不提取重用呢是根据名字在数据库中找选中名字的全部记录,找到一条记录显示“成功”,然后sum+25,但是你每算一个人应该把sum清零啊,要不算完张三,算李四,但是此时sum是张三的sum,没有清零啊现在是表中有几个张三就显示几回“成功”,显示有什么用吗,应该是调试的时候写的吧再label中显示结果就可以了吧1、建议把计算总分提取重用2、计算之前要清零
解决方案四:
引用2楼virusplayer的回复:
需求,你的需求是什么呢写了四段重复的代码,为什么不提取重用呢是根据名字在数据库中找选中名字的全部记录,找到一条记录显示“成功”,然后sum+25,但是你每算一个人应该把sum清零啊,要不算完张三,算李四,但是此时sum是张三的sum,没有清零啊现在是表中有几个张三就显示几回“成功”,显示有什么用吗,应该是调试的时候写的吧再label中显示结果就可以了吧1、建议把计算总分提取重用2、计算之前要清零
解决方案五:
引用2楼virusplayer的回复:
需求,你的需求是什么呢写了四段重复的代码,为什么不提取重用呢是根据名字在数据库中找选中名字的全部记录,找到一条记录显示“成功”,然后sum+25,但是你每算一个人应该把sum清零啊,要不算完张三,算李四,但是此时sum是张三的sum,没有清零啊现在是表中有几个张三就显示几回“成功”,显示有什么用吗,应该是调试的时候写的吧再label中显示结果就可以了吧1、建议把计算总分提取重用2、计算之前要清零
解决方案六:
楼主你的四段代码可以用下面这一段来代替privatevoidradioButton1_CheckedChanged(objectsender,EventArgse){//tion=newSqlConnection("server=.;database=ddt;uid=sa;pwd=");sql="select*fromnamewherename='"+(senderasRadioButton).Text+"'";try{tion.Open();and=newSqlCommand(sql,tion);rd=and.ExecuteReader();if(rd.Read()){MessageBox.Show("成功");sum=sum+25;}}catch(SqlExceptionex){MessageBox.Show(ex.Message);}finally{tion.Close();rd.Close();and.Dispose();}}