首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#学生基本信息浏览运行后无法实现上一条,下一条查询有关问题

2013-12-19 
C#学生基本信息浏览运行后无法实现上一条,下一条查询问题。各位大师好,我的代码是这样的;using Systemusin

C#学生基本信息浏览运行后无法实现上一条,下一条查询问题。
各位大师好,我的代码是这样的;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//using System.Data;
using System.Data.OleDb;

namespace StudentSystem
{
    public partial class Form5 : Form
    {
        public int  num;
        public Form5()
        {
            InitializeComponent();
        }

        public void baseInfo_load(string s2)
        {

            if (textBox1.Text == "")
            {
                MessageBox.Show("请输入学号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Focus(); return;
            }

            textBox2.Text = ""; textBox3.Text = ""; textBox5.Text = ""; textBox6.Text = ""; textBox7.Text = ""; textBox8.Text = ""; textBox9.Text = ""; textBox10.Text = "";
            string s1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb";
             
            OleDbConnection cn = new OleDbConnection(s1);
            cn.Open();
            OleDbCommand cm = new OleDbCommand(s2, cn);
            OleDbDataReader da = cm.ExecuteReader();
            while (da.Read())
            {
                // num = (int)textBox1.Text;
                num = (int)Convert.ToInt64(textBox1.Text);
                textBox2.Text = da["学号"].ToString().Trim();
                textBox3.Text = da["姓名"].ToString().Trim();
                textBox4.Text = da["性别"].ToString().Trim();
                textBox5.Text = da["民族"].ToString().Trim();
                textBox6.Text = da["出生年月"].ToString().Trim();
                textBox7.Text = da["家庭住址"].ToString().Trim();
                textBox8.Text = da["电话"].ToString().Trim();
                textBox9.Text = da["专业"].ToString().Trim();
                textBox10.Text = da["入学年份"].ToString().Trim();
                textBox11.Text = da["班级"].ToString().Trim();
                
            }
            cn.Close();
            if (textBox2.Text == "")
            {
                MessageBox.Show("没有此信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                textBox1.Focus(); return;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string s2 = "select * from 学生基本信息 where 学号='" + textBox1.Text + "'";


            baseInfo_load(s2);
        }

        private void button2_Click(object sender, EventArgs e)
        {

            --num;
            string s2 = "select * from 学生基本信息 where 学号='" + num.ToString() + "'";
            baseInfo_load(s2);
            if (textBox2.Text == "")
            {
                MessageBox.Show("已经是最后一张了!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            ++num;
            string s2 = "select * from 学生基本信息 where 学号='" + num.ToString() + "'";
            baseInfo_load(s2);
            if (textBox2.Text == "")
            {
                MessageBox.Show("已经是第一张了!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
        }
    }
}
   本来数据库里有两条记录的,可是无论是上一条还是下一条都只会显示已经是第一张了或已经是最后一张了。
[解决办法]
首先,你需要一个主键自增长的列名。现在我不知道你代码里哪个是!暂且叫id吧!
然后你就可以根据SQL语句
select max(id) from 学生基本信息  或
select min(id) from 学生基本信息
能查到最大id号和最小id号,也就是最后一个与第一个。
[解决办法]
认真看了一下你的代码,各种不规范。。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//using System.Data;
using System.Data.OleDb;

namespace StudentSystem
{
    public partial class Form5 : Form
    {
        private int num; //声明全局变量时加上注释好吗?还有如果只有Form5类里面用num这个变量,请用private,表示私有。
        public Form5()
        {
            InitializeComponent();
        }

//函数要注释说明功能,比如查询,声明变量时要写表示具体含义的英文,没有特殊要求最好不要加_和数字
        private void baseInfo_load(string str)
        {

            if (textBox1.Text == "")
            {
                MessageBox.Show("请输入学号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Focus();//;结束以后应该另起一行
return;
            }

            // textBox2.Text = "";//这段都删除了,我不知道你这段为什么要把内容都置空,没必要吧,下面你都已经赋值了呀
// textBox3.Text = "";
// textBox5.Text = "";
// textBox6.Text = "";
// textBox7.Text = "";
// textBox8.Text = "";
// textBox9.Text = "";
// textBox10.Text = "";
            string OleDbString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb";//注意变量名


             
            OleDbConnection cn = new OleDbConnection(OleDbString);
            cn.Open();
            OleDbCommand cm = new OleDbCommand(str, cn);
            OleDbDataReader da = cm.ExecuteReader();
            while (da.Read())
            {
                // num = (int)textBox1.Text;
                //num = (int)Convert.ToInt64(textBox1.Text);//(int)?convert本身就是强制类型转换,你已经把textBox1的内容转换成int64了为什么还要转换一次int32?
int a = 0;
if (int.TryParse(textBox1.Text, out a) == false) //要先判断是否可以转换为整型,如果别人随便输入一串文字,你的程序直接就崩溃了
{
//不是整型
return;
}
else
{
//是整型
num = Convert.ToInt32(textBox1.Text);
}
                textBox2.Text = da["学号"].ToString().Trim();
                textBox3.Text = da["姓名"].ToString().Trim();
                textBox4.Text = da["性别"].ToString().Trim();
                textBox5.Text = da["民族"].ToString().Trim();
                textBox6.Text = da["出生年月"].ToString().Trim();
                textBox7.Text = da["家庭住址"].ToString().Trim();
                textBox8.Text = da["电话"].ToString().Trim();
                textBox9.Text = da["专业"].ToString().Trim();
                textBox10.Text = da["入学年份"].ToString().Trim();
                textBox11.Text = da["班级"].ToString().Trim();
                
            }
            cn.Close();
            if (textBox2.Text == "")
            {
                MessageBox.Show("没有此信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                textBox1.Focus(); return;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string str = "select * from 学生基本信息 where 学号='" + textBox1.Text + "'";
            baseInfo_load(str);
        }

        private void button2_Click(object sender, EventArgs e)
        {

            --num;
            string str = "select * from 学生基本信息 where 学号='" + num.ToString() + "'";//num表示的是学号吗?看不懂啊看不懂
            baseInfo_load(str);
            if (textBox2.Text == "")//你的textBox2控件没有内容才会进入下面的MessageBox,没看懂你写的这句什么逻辑
            {
                MessageBox.Show("已经是最后一张了!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            ++num;
            string str = "select * from 学生基本信息 where 学号='" + num.ToString() + "'";


            baseInfo_load(str);
            if (textBox2.Text == "")
            {
                MessageBox.Show("已经是第一张了!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
        }
    }
}


最后说一句发源代码请加上C#学生基本信息浏览运行后无法实现上一条,下一条查询有关问题方便别人看。

热点排行