1. 程式人生 > >溫習WinForm程式與資料庫連線操作

溫習WinForm程式與資料庫連線操作

        新的一學期,新的開始,2012年為了迎接百日之後的實習,開始緊跟著老師複習,加上自己的繼續堅持學習,希望時間一到可以找到一個比較好的工作,與實現自己的夢想更進一步。

       今天覆習了之前學過的WinForm窗體程式,實現一個簡單的登入功能,通過作業也實現了一些以前沒做過的功能,限制登入次數,登入次數過多後稍候才能再次登入。

       通過今天的複習感覺到,知識學的快,忘記的速度也是不容小視的,要保持自己的記憶,只有堅持“學而時習之”,然而每個人的一生也都應該在學習中度過,這樣不會覺得時間被浪費,被荒度,充分利用每時每刻,溫習舊的知識,更新新的知識,而且在IT這一特殊的行業中,技術更新的速度之快,經常會出乎人們的意料,更突出了更新自己的技術的重要性,保證自己不OUT掉,才會提升自己的價值,保證自己在IT大軍中處於靠前的位置。

       今天的溫習也拾起了過去熟悉而現在卻有些許陌生的程式碼,下面也貼出來自己今天的成果以備後用

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

namespace WinFormWork
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public int i = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            string str = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
            SqlConnection con = new SqlConnection(str);
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "select * from T_Users where

[email protected] and [email protected]";
            com.Parameters.AddWithValue("@username", txtName.Text);
            com.Parameters.AddWithValue("@password", txtPassword.Text);
            SqlDataAdapter adapter = new SqlDataAdapter(com);
            DataTable dt = new DataTable();
            adapter.Fill(dt);

            if (dt.Rows.Count == 1)
            {
                if (i > 2)
                { MessageBox.Show("嘗試次數過多,請稍候再試"); }
                else
                {
                    MessageBox.Show("登入成功!");
                }
            }
            else if (dt.Rows.Count <= 0)
            {
                if (i == 0)
                {
                    MessageBox.Show("輸入使用者名稱或密碼不正確,請重新輸入,還有2次機會!");
                    i++;
                    return;
                }
                else if (i == 1)
                {
                    MessageBox.Show("輸入使用者名稱或密碼不正確,請重新輸入,還有1次機會!");
                    i++;
                    return;
                }
                else if (i == 2)
                {
                    MessageBox.Show("嘗試次數過多,請稍候再試!");
                    com.CommandText = "update T_Users set
[email protected]
where [email protected]";
                    com.Parameters.AddWithValue("@error", DateTime.Now);
                    com.Parameters.AddWithValue("@name", txtName.Text);
                    con.Open();
                    int m = com.ExecuteNonQuery();
                    i++;

                }
                #region 等待時間
                else
                {
                    com.CommandText = "select Errortime from T_Users where usernam[email protected]";
                    com.Parameters.AddWithValue("@user", txtName.Text);
                    con.Open();
                    string time = Convert.ToString(com.ExecuteScalar());
                    DateTime datetime1, datetime2 = DateTime.Now;
                    datetime1 = Convert.ToDateTime(time);
                    int d3 = 0;

                    TimeSpan ts1 = new TimeSpan(datetime1.Ticks);
                    TimeSpan ts2 = new TimeSpan(datetime2.Ticks);

                    TimeSpan ts = ts1.Subtract(ts2).Duration();

                    d3 = ts.Minutes;
                    if (d3 < 2)
                    {
                        MessageBox.Show("嘗試次數過多,請稍候再試!");
                    }
                    else
                    {
                        i = 0;
                        return;
                    }
                }
                #endregion

            }
           
            com.Dispose();
            con.Dispose();
        }
    }
}
一種表示時間段的例項:

TimeSpan是用來表示一個時間段的例項,兩個時間的差可以構成一個TimeSpan例項,現在就來簡單介紹一下幾點重要的用法:

a 先來介紹幾個方法

TimeSpan.Minutes(其他時間比如天數,小時數,秒數都一樣的情況下得到的分鐘數的差),其他的Hours,Second一樣

DateTime.Tick :是一個計時週期,表示一百納秒,即一千萬分之一秒,那麼 Ticks 在這裡表示總共相差多少個時間週期,即:9 * 24 *                   3600 * 10000000 + 23 * 3600 * 10000000 + 59 * 60 * 10000000 + 59 * 10000000 = 8639990000000。3600 是一小時                   的秒數

TimeSpan.TotalDays:兩個時間段相差的日數,其他的TotalHours,TotalMinutes,TotalSeconds 一樣

b 兩個時間的差

string time1 = "2010-5-26 8:10:00";

string time2 = "2010-5-26 18:20:00";

DateTime t1 = Convert.ToDateTime(time1);

DateTime t2 = Convert.ToDateTime(time2);

TimeSpan ts1=t2-t1;

string tsMin=ts1.Minutes.ToString();

TimeSpan ts11=new TimeSpan(t1.Tick);

TimeSpan ts22=new TimeSpan(t2.Tick);

string diff=ts22.Subtract(ts11).TotalMinutes.ToString();

Subtract:表示兩個時間段的差

diff:就表示兩個時間相差的分鐘數,上面的例子就是610分鐘。

 得到一個 TimeSpan 例項,TimeSpan 有一些屬性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、Ticks,注意沒有 TotalTicks。

這些屬性名稱開始理解有些困難,但閱讀本文後,相應您一定茅塞頓開。

舉例說明

  • 時間 1 是 2010-1-2 8:43:35;
  • 時間 2 是 2010-1-12 8:43:34。

用時間 2 減時間 1,得到一個 TimeSpan 例項。

那麼時間 2 比時間 1 多 9 天 23 小時 59 分 59 秒

那麼,Days 就是 9,Hours 就是 23,Minutes 就是 59,Seconds 就是 59。


相關推薦

溫習WinForm程式資料庫連線操作

        新的一學期,新的開始,2012年為了迎接百日之後的實習,開始緊跟著老師複習,加上自己的繼續堅持學習,希望時間一到可以找到一個比較好的工作,與實現自己的夢想更進一步。        今天覆習了之前學過的WinForm窗體程式,實現一個簡單的登入功能,通過作業也

解決C# WinForm程式Oracle連線介面長時間沒有響應的問題

程式情況:C#編寫的WinForm程式(使用者管理系統),後端WCF服務為其提供資料,與Oracle相關的操作在WCF伺服器完成。遇到問題:最近有使用者報告異常,描述WinForm的某個搜尋介面(去呼叫WCF服務在Oracle中查詢資料)一直處於等待狀態。DBA那邊也有人報告

flask資料庫連線相關操作

---恢復內容開始--- 首先要安裝  flask-sqlalchemy  資料庫連線設定 在flask-SQLAlchemy中,資料庫使用URL指定,而且程式使用的資料庫必須儲存到flask配置物件的SQLALCHEMY_DATABASE_URL鍵中 app.config['SQ

Java學習篇之--用純Java的JDBC驅動程式實現資料庫連線

用純Java的JDBC驅動程式實現與資料庫連線         最近在研究JAVA中資料庫的連線,將知識整理一下分享給大家:         Java程式可以用純Java的JDBC驅動程式實現與資料庫連線。這種方法應用較廣泛,但是需要下載相應的驅動程式包,因為不同的資

python單例資料庫連線

 單例:專業用來處理連線多的問題(比如連線redis,zookeeper等),全域性只有一個物件   單例程式碼def singleton(cls): instances = {} def _singleton(*args, **kwargs)

asp.net一般處理程式資料庫操作

一、新建一個網站,在網站下面新增一個一般處理程式DemoHandler.ashx,程式碼如下: <%@ WebHandler Language="C#" Class="DemoHandler" %> using System; using System.Web; using System

事務 資料庫連線池【c3p0】 DBUtiles學習筆記

1.事務 開啟事務:start transaction; 回滾事務:rollback; 提交事務: commit; 關閉自動提交事務:setAutoCommit(false); 1.1事務的特性ACID【面試】 1.原子性【A】:事務包含的邏輯不可分割 一致性【C】:事務執行前後,資料完

Java——Web開發之事務資料庫連線

事務:指的是一組操作,裡面包含許多個單一的邏輯,只要有一個邏輯沒有執行成功,那麼都算失敗,所有的資料都回到最初的狀態。事務在預設情況下是自動提交的。(事務指標對連線物件)   1.事務的簡單使用 1).關閉自動提交的設定 conn.setAutoCommit(fal

C# SqlCommand 資料庫連線操作

//資料庫操作 string strcon = "server = localhost,1433;uid = sa; pwd = 123456; database = MyDataBase"; string strSQL = "select N

事務資料庫連線池DBCP和C3P0工具類DBUtils

文章目錄 事務 使用命令列方式演示事務。 使用程式碼方式演示事務 事務的特性 事務的安全隱患 讀未提交 演示 讀已提交演示 可序列化

JDBC配置問題資料庫連線測試

jdbc下載地址 jdbc下載: 開啟網址後拉到下面,可以看到下圖所示 然後選中紅色方框中的檔案下載 下載完後解壓,然後進入到該目錄 把這個檔案 “mysql-connector-java-8.0.12.jar” 複製到java的安裝目錄下的/jre/lib/ext 如下圖: 這是我

實現JAVA資料庫連線

一.下載JDBC 解壓就可以使用,不需要安裝 二.配置你的資料庫伺服器,我的是sql2014 設定SQL Server網路配置,啟用TCP/IP協議 重啟SQL Server服務 SQL Server 2014 網路配置:MSSQLSERVER協議→啟用“TC

多執行緒Django程式耗盡資料庫連線的問題

Django的ORM是非常好用的,哪怕不是做Web專案也值得一用,所以網上也可以找到不少使用 Django 開發非Web專案的資料,因為除了ORM之個,命令列、配置檔案等元件也非常好用。 最近用這種方式開發了一個非Web專案,而且是多執行緒的。有N個工作執行緒從

解決ArcSDE資料庫連線後,資料編輯的問題

轉載:ArcGIS 10.2匯入ArcSDE圖層不能編輯的問題 10.0之後在SDE資料庫方面有了一些調整。 在SDE資料庫中匯入或者建立要素,如果要在桌面版中進行編輯,需要先進行註冊。步驟如下: 1、建立資料庫連線 2、新建空間要素 3

react專案實戰三 登入註冊頁面資料庫連線

ps:此部分(第二部分)的程式碼,提交簡介為second commit 原始碼地址 需要引入依賴庫 npm install body-parser --save 接收post請求返回的引數 npm install utility --save MD5加密

Python資料庫支援:PyMySQL安裝+資料庫連線操作+捕獲異常回滾操作

PyMySQL是python3.x版本中用於連線MySQL伺服器的一個庫,Python2使用的是mysqldb PyMySQL遵循Python資料庫API v2.0規範,幷包含了pure-Python MySQL客戶端庫。 PyMySQL安裝 地址https://g

hibernate 中資料庫連線操作

hibernate.cfg.xml  中配置 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate

PHP資料庫操作

PHP、資料庫、HTML關係如下: PHP連線資料庫及查詢資料庫如下: <?php //編碼 header('content-type:text/html; charset=utf-8'); //連線資料庫 然候操作資料庫 $conn = mysql

事務資料庫連線

文章目錄 事務 為什麼要有事務? 使用程式碼方式演示事務 事務的特性(ACID) 事務的隔離級別 事務的安全隱患【這裡都涉及到兩個事務】 解決丟失更新

關於idea SpringBoot專案中出現資料庫連線載入不到驅動類異常

解決問題的關鍵看pom.xml是否配置,還有就是版本號要寫上,有些Mysql預設版本不被支援,我的Mysql就出現這個情況,配上version版本就好了看了半天部落格,不知道哪錯了,軟體解除安裝了又裝還是不行,結果一個Bug出現在沒配置版本號上,以後引以為戒!<depe