1. 程式人生 > >學生用戶管理系統(二)

學生用戶管理系統(二)

tostring str rust 意思 儲存器 即將 需要 http nec

接著上一條隨筆。

這個用戶管理系統能夠實現從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();

這個功能是為了防止窗口假死,但是處理速度會慢一點,在多循環的時候可以用上。

 

學生用戶管理系統(二)