数据库原理实验二:登录的实现

目标:设计登陆界面并且连接数据库.

新建项目Login,现在Form1中设计界面如下,用到了Button,Label,TextBox控件:

在这里插入图片描述
打开SQL Server,创建表Account,其中包含属性Account和Passage,加入一些数据。如图:
在这里插入图片描述

点击控件,编辑代码,代码如下:

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

namespace Login
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label3_Click(object sender, EventArgs e)
        {
        }

        private void label1_Click(object sender, EventArgs e)
        {
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();//关闭应用程序
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
        	 //取出第一行中的账号给username,Trim去掉前面的空格;
            string username = textBox1.Text.Trim();
            //取出第二行中的密码给passage
            string password = textBox2.Text.Trim();


            //string connstr = ConfigurationManager.ConnectionStrings["connectionString"].ToString();//读取连接字符串
            //连接数据库,Date Source是要连接数据库的名字,“."是本机;Initial Catalog是要连接的库的名称;
            //Persist Srcurity Info=True就先带着就行;User ID和Password是SQL的登录名和密码
            string myConnString = "Data Source=.;Initial Catalog=Student;Persist Security Info=True;User Id=sa;Password=123456";
            
            
            //SqlConnection如果报错,光标放在那里,点击using System.Data.SqlClient,
            //使用系统的类,就不会报错了,我的一开始就有,没有报错。
            //将上面新建变量的值myConnString给SqlConnection类型的sqlConnection,这样就
            //打开了数据据Student;myConnString写的谁就连接谁;
            SqlConnection sqlConnection = new SqlConnection(myConnString);
            //打开这个数据库;
            sqlConnection.Open();


			 //编写查找命令,在库中查找是不是存在之前从TextBox中取出的用户名和密码;
            string sql = "select Username,Password from Account where Username = '" + username + "' and password = '" + password + "'"; 
           
            //SQL语句要用C#执行,要在刚才打开的sqlConnection中执行,建立一个sqlConmmand命令变量
            SqlCommand sqlCommand = new SqlCommand(sql,sqlConnection);
			//在这里开始执行SQL命令
            SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
            

            if (sqlDataReader.HasRows)   //查询结果非空,登录成功
            {
            	//MessageBoxIcon.Asterisk是图标, MessageBoxButtons.OK是确定按钮;
                MessageBox.Show("WELCOME!", "notice", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);             
                label1.Text = "Log in :" + username; //label1后面出现登陆的用户名
           
            }
            else   //查询结果为空,登录失败
            {
                MessageBox.Show("FAILED!", "notice", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            sqlConnection.Close();//数据库关闭,与打开对应
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
        }
    }
}

一开始运行期间出现异常:
1、System.ArgumentException:“不支持关键字: “date source”。”
查了查,才发现我把data打成了date,哑口无言。。

2、System.Data.SqlClient.SqlException:“在应使用条件的上下文(在 ‘name’ 附近)中指定了非布尔类型的表达式。”
这个异常说在name附近,我看了看,,没有name,除了我之前确实把表的属性名称设置了一个user name,我猜测可能是空格让系统识别不出来了,把user name改成了username,再运行就没问题了。

最终运行:
在这里插入图片描述

添加窗体:右侧解决方案资源管理器-右键项目Login-添加-窗体-Windoes窗体,起个名称;
再form1代码if(运行成功)里面加上以下代码:

	FormMain formMain = new FormMain();//将窗体实例化
    formMain.Show();
    this.Hide();//当前窗体隐藏,不能close,不然整个窗体就退出了

运行,点击Welcom的确定之后,出现了新建的窗体。并且form1的窗体被隐藏了。

关闭新建的窗口后,会发现form1的窗口并没有关闭,可此时form1的窗口已经被隐藏了,怎么关闭呢?
form1中的取消按钮就是关闭from1窗口,他的点击事件中是Application.Exit();关闭应用程序,这时再formMain中建一个按钮,在他的点击事件中将这个代码写上,则点击formMain窗体的按钮,应用程序就可以关闭了。
在这里插入图片描述
密码变成密文:
右击TextBox2-属性,在passwordchar中输入想要变成的样子;
在这里插入图片描述
在这里插入图片描述

DataGridView:双击它就可以在设计中显示出来
用来显示数据,点击右上方一个小三角-选择数据源-添加项目数据源-数据库下一步-数据集-下一步-新建连接-选择SQL server连接;
在这里插入图片描述
测试连接,显示成功后,点击确定;
在这里插入图片描述

选择显示连接字符串。点击是,(点击是的话那么像密码啥的就也会显示出来)
在这里插入图片描述
这串字符串和之前form1中的一句代码是相同的;
点击下一步,选择要显示的东西(视图,表),完成;
这时,可以看到DataGridView中已经有了表头:
在这里插入图片描述
运行后,输入账号密码,数据都显示出来了:
在这里插入图片描述

原创文章 23 获赞 25 访问量 1万+

猜你喜欢

转载自blog.csdn.net/karive/article/details/105954135
今日推荐