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

C#连接数据库,忙活了几个小时了!真心!

2012-12-27 
【求助】C#连接数据库,忙活了几个小时了!真心求助!!!这几段都看不懂啊!其实就这一小段。关键是数据库我没听讲

【求助】C#连接数据库,忙活了几个小时了!真心求助!!!
这几段都看不懂啊!其实就这一小段。关键是数据库我没听讲,C#还行,就这几行,看不懂,纠结几个小时了!!!
谁能告诉我,真心感谢!!!
main.Tag = this.FindForm();   //主窗口.Tag不知道是什么属性
SqlDataReader dr;   //不认识
cmd.CommandText = sql;   //有点模糊
dr = cmd.ExecuteReader();   //ExecuteReader网上查过也不懂
dr.Read();   //不明白
if ((bool)dr.GetValue(2))   //GetValue真心不认识

下面是登录窗口的全部代码:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace LibraryMIS
{
    public partial class frmLogin : Form
    {
        private SqlConnection myCon = null;
        public frmLogin()
        {
            InitializeComponent();
            this.myCon = new SqlConnection(LibraryMIS.database.dbConnection.connection);
        }

        private void btOk_Click(object sender, EventArgs e)
        {
            if (txtName.Text.Trim() == "" || txtPassword.Text.Trim() == "")
                MessageBox.Show("请输入用户名和密码", "提示");
            else
            {
                myCon.Open();
                SqlCommand cmd = new SqlCommand("", myCon);
                if (rdoManage.Checked == true)
                {
                    string sql = "select * from tb_Manager where MName='" + txtName.Text.Trim() + "' and MCode='" + txtPassword.Text.Trim() + "'";
                    cmd.CommandText = sql;
                    if ( cmd.ExecuteScalar() != null)
                    {
                        //隐藏登录窗口
                        this.Visible = false;
                        //创建并打开主界面


                        
                        frmMain main = new frmMain();
                        main.Tag = this.FindForm();
                        SqlDataReader dr;
                        cmd.CommandText = sql;
                        dr = cmd.ExecuteReader();
                        dr.Read();

                        if ((bool)dr.GetValue(2))
                        {
                            main.menuItem1.Visible = true;
                            main.menuItem2.Visible = true;
                            main.menuItem3.Visible = true;
                            main.menuItem4.Visible = true;
                            main.menuItem5.Visible = true;
                         }

                        if ((bool)dr.GetValue(3))
                        {
                            main.menuItem4.Visible = true;
                        }

                        if ((bool)dr.GetValue(4))
                        {
                            main.menuItem5.Visible = true;
                        }                        



                        main.statusBarPanel2.Text = txtName.Text.Trim();
                        main.statusBarPanel6.Text = "管理员";

                        main.ShowDialog();
                    }
                    else
                        MessageBox.Show("用户名或密码错误", "警告");
                }
                else if (rdoPerson.Checked == true)
                {
                    string sql = "select * from tb_Person where PID='" + txtName.Text.Trim() + "' and PCode='" + txtPassword.Text.Trim() + "'";
                    cmd.CommandText = sql;
                    if ( cmd.ExecuteScalar()!=null)
                    {
                        //隐藏登录窗口
                        this.Visible = false;
                        //创建并打开主界面
                        frmMain main = new frmMain();
                        main.Tag = this.FindForm();
                        SqlDataReader dr;
                        cmd.CommandText = sql;
                        dr = cmd.ExecuteReader();
                        dr.Read();

                        if ((bool)dr.GetValue(9))
                        {


                            main.menuItem5.Visible = true;
                        }
                        main.statusBarPanel2.Text = txtName.Text.Trim();
                        main.statusBarPanel6.Text = "读者";
                        main.ShowDialog();
                    }
                    else
                        MessageBox.Show("用户名或密码错误", "警告");
                }
                else
                    MessageBox.Show("没有选择角色", "提示");
                myCon.Close();
            }
        }

        private void btClose_Click(object sender, EventArgs e)
        {
            myCon.Close();
            this.Close();
        }

        private void frmLogin_Load(object sender, EventArgs e)
        {

        }
    }
}


[解决办法]
main.Tag = this.FindForm();   tag可以保存任何属性,这里用来窗体间传值
 SqlDataReader dr;   用来一行一行读取数据的对象,相当于一个游标
 cmd.CommandText = sql;   sql知道么?select xxx from xxx where ... 查询的
 dr = cmd.ExecuteReader();   把查询的结果交给阅读器
 dr.Read();  阅读器移动到下一行数据(第一次调用指向第一行数据)
 if ((bool)dr.GetValue(2))   获取这一行数据中第3列的值(从0开始,所以是第2+1列)

上课可以不好好听,但是下课了一定要好好的学,如果你可以像我一样,比老师懂的多,你再翘课。

热点排行