• 学生用户管理系统(二)


    接着上一条随笔。

    这个用户管理系统能够实现从sql server 数据库中的一张表读取用户名和密码来看是否与用户输入的相同,相同则进入另一个页面,否则跳messagebox.

    若用户没有注册,该系统也提供了注册功能,如果注册的用户名重复了,系统会提示用户已重复。(这个功能研究的我最长时间,哎,醉了)如果没重复,

    则成功注册,用户就可以通过注册后的用户登陆进去系统进入我们另一个页面了。

    进入正题,

    跟数据库连接时需要写出数据库的连接字符串,有两种形式。

    即有Windows身份验证和SQL server 身份验证两种。

    //sql server 身份验证 连接字符串  
      
    private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;database=数据库名称";  
      
      
    //windows 身份验证连接字符串  
      
    private string ConnstrWindows = "server=服务器名称;database=数据库名称;Trusted_Connection=SSPI"; 

    (如果忘了sql server身份验证的密码,可以通过windows身份验证进入查看数据库用户名,然后可以修改密码)

    连接数据库需要sqlconnection,还有数据表查询字符串。

    只要前面的连接字符串以及sqlconnection 无误,基本可以打开数据库了(sqlconnection.open())

      string sqlstring = "server=ZJX-PC;uid=sa;pwd=;database=zjx";
      SqlConnection conn = new SqlConnection(sqlstring);
      conn.Open();
      string sql = "Select * from info where id='" + this.textBox1.Text.Trim() + "' and sw='" + this.textBox2.Text.Trim() + "'"; //要执行的 sql 语句
      string sql2 ="Select id from info where id ='" + this.textBox1.Text.Trim() + "'";
                  

    此时需要一个sqlcommand的类来 解读 这个sql的语句

     SqlCommand cmd = new SqlCommand(sql, conn);

    如果执行的sql解读不对,可以用 sqlconnection 判断,即打开连接的时候出错,就把他try一下,就是说明用户名密码有问题,直接报messagebox。

    此时我加了一个判断,不加应该也可以。

     SqlDataReader dateReader = cmd.ExecuteReader();
                                        
                if (dateReader.Read())
                {
                    MessageBox.Show("即将进入画面");
                        timer1.Start();
                        conn.Dispose();
                        conn.Close();
     SqlDataReader dateReader = cmd.ExecuteReader(); 意思就是把解读的结果放到datereader这个实例中,下面判断如果读到东西了,更加说明有,即进入系统,因为数据库连接为非托管系统,需要手动释放内存,不加也可以,我不太太清楚后果如何,等学到了在研究内存释放吧。



    注册用户:

      string sqlstring = "server=ZJX-PC;uid=sa;pwd=zjx28963436;database=zjx";
                SqlConnection conn = new SqlConnection(sqlstring);
                if (textBox1.Text != "" && textBox2.Text != "")
                {
                    conn.Open();
                    string sql = " insert into info(id,sw) values ('" + textBox1.Text + "'," + "'" + textBox2.Text + "') "; //要执行的 sql 语句
                    string sql2 ="Select id from info where id ='" + this.textBox1.Text.Trim() + "'";
                    SqlCommand cmd = new SqlCommand(sql, conn);//同登录
                    SqlCommand cmd2 = new SqlCommand(sql2, conn);

    跟上面相同的操作,要在数据库字符串中写清想要的功能。

     cmd.CommandText = sql;

    这行是为了执行sql语句放入储存器中。

    接着是

    int i = int.Parse(cmd.ExecuteNonQuery().ToString());
    cmd.ExecuteNonQuery()这个可以返回你执行后受影响的行数,即你插入了用户名密码,执行成功,返回值至少大于0。



    防止用户重复:
     bb = cmd2.ExecuteScalar().ToString();

    我用ExecuteScalar()这个方法来判断,他的用法是 执行查询,然后返回查询后的结果在第一行第一列,就是只返回一个数据。

    我的查询是sql2,意思是查找相同的用户名,如果有相同的,则返回相同用户名的名字,如果没有,则产生null,于是我用try catch 来判断 即实现了功能。

    最后还有一个就是

     Application.DoEvents();

    这个功能是为了防止窗口假死,但是处理速度会慢一点,在多循环的时候可以用上。

    ______________________________________________________________________________________________________________________________________________________________________________________________________

    2018-3-24 16:59:21 补充

  • 相关阅读:
    gflag使用
    INTERVIEW #2
    Decision Tree
    Java FAQ
    K-Nearest Neighbors
    INTERVIEW #1
    C++ FAQ
    INTERVIEW #0
    Selection Sort
    TCP 3-Way Handshake
  • 原文地址:https://www.cnblogs.com/zjx123/p/7991196.html
Copyright © 2020-2023  润新知