数据库注册登陆练习

以下是数据库注册练习的程序:

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace 注册练习
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnReg_Click(object sender, EventArgs e)
        {
            string str_user = "";
            string str_pwd = "";
            string str_pwdConfirm = "";

            str_user=txtUser.Text.Trim();
            str_pwd=txtPwd.Text;
            str_pwdConfirm = txtPwdConfirm.Text;


            if (string.IsNullOrEmpty(str_user) || string.IsNullOrEmpty(str_pwd) || string.IsNullOrEmpty(str_pwdConfirm))
            {
                MessageBox.Show("请输入完整信息");
                return;
            }

            if (str_pwd != str_pwdConfirm)
            {
                MessageBox.Show("两次密码输入不一致");
                return;
            }

            string connStr = @"server=LIULIAN;database=MyDB;uid=sa;pwd=123;Integrated security=true ";
            string sql = string.Format("insert into  [Table_loginTest](uid,pwd)values('" + str_user + "','"+str_pwd+"');");
            using (SqlConnection conn = new SqlConnection(connStr))
            {

                if (lblStatus.Text == "√")  //没有重复的,所以家这一条语句
                {
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {
                        conn.Open();
                        int count = (int)cmd.ExecuteNonQuery(); //是否增加了一条数据
                        conn.Close();
                        MessageBox.Show(count > 0 ? "注册成功" : "注册失败");
                    }
                }
            }
        }

        private void txtUser_Leave(object sender, EventArgs e)  //鼠标离开事件
        {
            // string uid =txt.Text.Trim();
            string str_uid = txtUser.Text.Trim();
            if (string.IsNullOrEmpty(str_uid))
            {
                lblStatus.Text = ""; return;
            }
            // 验证

            string connStr = @"server=LIULIAN;database=MyDB;uid=sa;pwd=123;integrated security=true";
            string sql = string.Format("select count(*) from [Table_loginTest] where uid='" + str_uid + "' ");

            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn)) 
                {
                    conn.Open();

                    int count=(int)cmd.ExecuteScalar();
                    conn.Close();

                    if (count > 0)//说明已经有重复的了
                    {            
                        lblStatus.ForeColor = Color.Red;
                        lblStatus.Text ="用户已经存在";
                    }
                    else   //说明没有重复的
                    {
                        lblStatus.ForeColor = Color.Green;
                        lblStatus.Text = "√";
                    }
                }
            }
        }

        private void txtUser_TextChanged(object sender, EventArgs e)
        {
           //// string uid =txt.Text.Trim();
           // string str_uid = txtUser.Text.Trim();
           // if (string.IsNullOrEmpty(str_uid))
           // {
           //     lblStatus.Text = ""; return;
           // }
           // // 验证

           // string connStr = @"server=.;database=MySecondDB;uid=sa;pwd=123;integrated security=true";
           // string sql = string.Format("select count(*) from [Table_loginTest] where  ");


        }

        private void btnLogin_Click(object sender, EventArgs e)//登陆测试
        {
            string str_user = "";
            string str_pwd = "";
            string str_pwdConfirm = "";

            str_user = txtUser.Text.Trim();
            str_pwd = txtPwd.Text;
            str_pwdConfirm = txtPwdConfirm.Text;


            if (string.IsNullOrEmpty(str_user) || string.IsNullOrEmpty(str_pwd) || string.IsNullOrEmpty(str_pwdConfirm))
            {
                MessageBox.Show("请输入完整信息");
                return;
            }

            string connStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
            string sql = string.Format("select count(*) from [Table_loginTest] where uid='" + str_user + "' and pwd='" + str_pwd + "';");
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    conn.Open();

                    int count = (int)cmd.ExecuteScalar();
                    conn.Close();

                    if (count > 0)//说明登陆正确
                    {
                        MessageBox.Show("登陆成功");
                    }
                    else   //说明登陆错误
                    {
                        MessageBox.Show("用户名或密码错误");
                    }
                }
            }

        }
    }
}

以下是配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>

  <connectionStrings>
    <add name="sql" connectionString="server=.;database=MyDB;uid=sa;pwd=123;integrated security=true"/>
    <add name="sql1" connectionString="第一个sql语句"/>
  </connectionStrings>

</configuration>

以下是界面图:
这里写图片描述
从该程序中我们能学习到什么:
其一:

引用块内容
关于MyCommand的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别:
1、ExecuteNonQuery():执行SQL,返回一个整型变量,如果SQL是对数据库的记录进行操作,那么返回操作影响的记录条数,如果是 SQL=”CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)”那么在表创建成功后该方法返回 –1。
例如:
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();’打开数据库
MyCommand1.CommandText = “CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)”; MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();’首先建立一个LookupCodes表,然后返回-1
//或者MyCommand1.ExecuteReader();首先建立一个LookupCodes表,然后返回一个System.Data.OleDb.OleDbDataReader类型的对象,该对象为:EOF
//或者MyCommand1. ExecuteScalar();首先建立一个LookupCodes表,返回未实列化的对象
MyConnection.Close();
}

2、 ExecuteScalar():执行SQL,(如果SQL是查询Select)返回查询结果的第一行第一列,如果(如果SQL不是查询Select)那 么返回未实列化的对象,因为对象未实列化,所以返回结果不能ToString(),不能Equals(null),也就是说返回结果没有任何作用

3、 executeReader方法执行SQL,(如果SQL是查询Select)返回查询结果的集合,类型是 System.Data.OleDb.OleDbDataReader,你可以通过此结果,获取查询的数据。如果(如果SQL不是查询Select)那么 返回一个没有任何数据的System.Data.OleDb.OleDbDataReader类型的集合(EOF)

其二:
如何添加程序配置文件:
第一步:
在工程里面添加新建项:选择应用程序配置文件 app.config
第二步:
在引用里面添加:System.configuration
第三步:
using System.Configuration;
第四步:
string connStr = ConfigurationManager.ConnectionStrings[“sql”].ConnectionString;
其三:
如何通过按钮控件的leave 事件,做出网络注册的效果
其四:
对一些控件的缩减词语的拼写:
http://wenku.baidu.com/view/85d395d384254b35eefd34e5.html
以上是学习的总结。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值