【求助】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列)
上课可以不好好听,但是下课了一定要好好的学,如果你可以像我一样,比老师懂的多,你再翘课。