您的位置:首页 > 数据库

数据库注册登陆练习

2016-01-07 00:03 211 查看
以下是数据库注册练习的程序:

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

以上是学习的总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: