C#通過窗體應用程序操作數據庫(增刪改查)


為了體現面向對象的思想,我們把“增刪改查”這些函數封裝到一個數據庫操作類里;

為了便於窗體程序與數據庫之間進行數據交互,我們建一個具有數據庫行數據的類,通過它方便的在窗體程序與數據庫之間傳輸數據;

我們新建一個文件夾,把這兩個類放在這個文件夾(App)里,以后,把命名空間寫上就可以使用這兩個類了。

image

imageimage

為了便於窗體程序與數據庫之間進行數據交互,我們建一個具有數據庫行數據的類,通過它方便的在窗體程序與數據庫之間傳輸數據。

首先,建立程序的主窗體

image

㈠添加數據

當點擊“增加”,彈出一個子窗體,通過子窗體往數據庫中添加一條數據

private void button1_Click(object sender, EventArgs e)
        {
            Form5 insert= new Form5();
            insert.Owner = this;
            insert.Show();        
        }

image

子窗體里的函數:

復制代碼
public partial class Form5 : Form
    {
        public Form5()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
    //將文本框中的數據存入SqlData類型的變量udata中
            SqlData udata = new SqlData();
            udata.Name = textBox1.Text;
            udata.Code = textBox2.Text;

            new SqlDA().addData(udata);//調用添加數據函數,添加數據udata
        }

      
    }
復制代碼

運行程序,添加數據,查看結果

imageimage

㈡查詢數據

第一個查詢形式, 
首先我們需要窗口一加載,就顯示出數據庫中的所有數據

首先,在存放方法的SqlDA類中,添加一個獲取數據的成員方法,該方法能返回一個數據集合

復制代碼
//查詢數據的方法
        public List<SqlData> select()
        {
            List<SqlData> list=new List<SqlData>();
            //連接數據庫,訪問數據
            _cmd = _con.CreateCommand();
            _con.Open();
            _cmd.CommandText = "select *from users";
            SqlDataReader dr= _cmd.ExecuteReader();

            //將數據庫數據轉換成Sqldata類型,並放入list集合中
            while  (dr.Read())
            {
                SqlData data=new SqlData();
                data.Code = dr["code"].ToString();
                data.Name = dr["name"].ToString();
                data.Pwd = dr["pwd"].ToString();
                list.Add(data);
            }
            _con.Close();
            return list;
        }
復制代碼

 

然后定義一個綁定數據函數,該函數將上面成員方法返回的數據綁定到listview1中,顯示出來

復制代碼
//綁定數據函數
        public void  bindData(List<SqlData> list)
        {
            //構建表結構
            listView1.Columns.Add("編號");
            listView1.Columns.Add("用戶名");
            listView1.Columns.Add("密碼");
            //將集合中的數據放入listview1中
            foreach (SqlData data in list)
            {
                ListViewItem it = new ListViewItem();//構建一個listviewitem對象,通過它把數據放入listview1中
                it.Text = data.Code;
                it.SubItems.Add(data.Name);
                it.SubItems.Add(data.Pwd );

                listView1.Items.Add(it);//將數據放入listview1的items集合中,
            }
            
        }
復制代碼

 

然后窗體加載事件中,追加綁定數據函數的委托

//窗體一加載,在listview1中綁定數據
        private void Form4_Load(object sender, EventArgs e)
        {
            bindData(new SqlDA().select());

        }

運行結果

image

第二個查詢形式, 
在窗口中輸入用戶名,根據用戶名進行模糊查詢

首先寫一個需要參數(用戶名)的查詢函數,我們可以寫一個select的重載函數,如下

復制代碼
//查詢數據的方法2,需要一個字符串參數,與上面的函數構成重載
        public List<SqlData> select(string uname)
        {
            List<SqlData> list = new List<SqlData>();
            //連接數據庫,訪問數據
            _cmd = _con.CreateCommand();
            _con.Open();
            _cmd.CommandText = "select *from users where name like '%"+uname+"%'";
            SqlDataReader dr = _cmd.ExecuteReader();

            //將訪問到的數據庫數據轉換成Sqldata類型,並放入list集合中
            while (dr.Read())
            {
                SqlData data = new SqlData();
                data.Code = dr["code"].ToString();
                data.Name = dr["name"].ToString();
                data.Pwd = dr["pwd"].ToString();
                list.Add(data);
            }
            _con.Close();
            return list;
        }
復制代碼

 

點擊“查詢”按鈕

//通過輸入用戶名,查詢數據
        private void button4_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            bindData(new SqlDA().select(textBox1.Text));
        }

image

㈢修改數據

首先,將主窗口的FullRowSelect屬性設為True,使行數據可選

image

點擊“修改”,彈出以下“修改”子窗體

image

修改數據不需要修改編號,將“修改”子窗體的第一個文本框的“Enabled”屬性設為false。

“修改”子窗體的代碼

復制代碼
public partial class Form6 : Form
    {
       
        public Form6()
        {
            InitializeComponent();
        }
        //重寫修改窗口的構造函數,顯示選中項的數據
        public Form6(SqlData data)
        {
            InitializeComponent();

            textBox3.Text=data.Code;
            textBox1.Text=data.Name;
            textBox2.Text=data.Pwd;

        }
       


        private void button1_Click(object sender, EventArgs e)
        {
            //將輸入的內容轉成SqlData格式
            SqlData data = new SqlData();
            data.Code = textBox3.Text;
            data.Name = textBox1.Text;
            data.Pwd = textBox2.Text;
            //調用修改數據函數
            new SqlDA().update(data);
        }
           
}
復制代碼

 

修改數據的函數

復制代碼
//修改數據的方法
        public void  update (SqlData data)
        {
            //打開連接,拼接命令
            _con.Open();
            _cmd = _con.CreateCommand();
            _cmd.CommandText = "update users set name=@name,pwd=@pwd where code=@code";
            _cmd.Parameters.Add("@name",data.Name );
            _cmd.Parameters.Add("@pwd", data.Pwd);
            _cmd.Parameters.Add("@code", data.Code);
            //執行命令,關閉連接
            _cmd.ExecuteNonQuery();
            _con.Close();
            
        }
復制代碼

將用戶名、密碼輸入后,點擊“修改”,在主窗口中點擊“查詢”,可以看到數據已修改

image

 

㈢刪除數據

復制代碼
//刪除數據的方法
        public void delete(SqlData data)
        {
            //打開連接,拼接命令
            _con.Open();
            _cmd = _con.CreateCommand();
            _cmd.CommandText = "delete from users where code=@code";
            _cmd.Parameters.Add("@code", data.Code);
            //執行命令,關閉連接
            _cmd.ExecuteNonQuery();
            _con.Close();

        }
復制代碼

 

newimage1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM