vs2008連線Acess資料庫

wzm10455發表於2013-04-25

1.先在Microsoft office下找到Access,建立自己的資料庫

2.在vs下建立GUI窗體,輸入程式碼:

以下是兩種顯示資料庫資訊的方式:ListBox和Gridview,第二個比較正規

      OleDbConnection mycon;
        OleDbCommand myCommand;
        OleDbDataReader myDataReader;

        public void OleCreateConnection(string cmdstr)//建立連線
        {
            string myConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\Administrator\\桌面\\new.mdb";//第二個引數是指所在資料庫的路勁,之所以有兩個斜槓是因為這是字串,兩個是轉義
            mycon = new OleDbConnection(myConnectionString);
            try
            {
                mycon.Open();
                MessageBox.Show("連線資料庫成功");
                myCommand = new OleDbCommand(cmdstr, mycon);
                myDataReader = myCommand.ExecuteReader();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string cmdstr = "select * from T_Student";
            OleCreateConnection(cmdstr);
            try
            {
              //使用listbox顯示資料庫資訊的方法
                while (myDataReader.Read())//myDataReader相當於一個指標,指向查詢值的最前面
                {
                    listBox1.Items.Add(myDataReader["編號"].ToString()+"   "+myDataReader["id"].ToString()+"   "+myDataReader["name"].ToString());//每一列的顯示方式
                }
                myDataReader.Close();//每一次使用後必須關閉,否則無法對資料庫進行其他的操作


                //使用DataGridView連線資料庫的方法
                myDataReader = myCommand.ExecuteReader();
                BindingSource bs = new BindingSource();//和下一列的順序最好不要顛倒
                bs.DataSource = myDataReader;
                dataGridView2.DataSource = bs;
                myDataReader.Close();


                mycon.Close();
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
3.如果你想修改顯示的資料庫的列的名稱怎麼辦?在GridView控制元件右上角編輯列-》新增你要顯示的列的個數-》在資料-》修改DataPropertyName改成資料庫中的欄位,在外觀中修改HeaderText中新增你想顯示的名稱

4.如果你的資料庫裡面的表名和欄位產生衝突時(有可能),比如說:user表中的username欄位,那執行查詢語句的時候很有可能會出錯,解決辦法:

select * from [user]取代select 8*from user.

5.當我們建立一個登入視窗時,查詢語句該怎麼寫? "select * from T_User where username='"+textBox1.Text+"' and password= '"+textBox2.Text+"'";

看到中間連線字串用的單引號了麼?是的,對於字串欄位的變數,如果不使用單引號是會出錯的,只有在欄位是數字型別也就是整數的時候可以不用。

其次,判斷這個是否有查詢結果,可以使用OlebdDataReader的hasRows屬性,為bool值

        private void button1_Click(object sender, EventArgs e)
        {
            string cmdstr = "select * from T_User where username='"+textBox1.Text+"' and password= '"+textBox2.Text+"'";
            OleCreateConnection(cmdstr);

            if (myDataReader.HasRows)
            {
                MessageBox.Show("登入成功");
            }
            else
            {
                MessageBox.Show("登入失敗");
            }
        }

6.資料庫漏洞,如果你的登入名隨意寫,密碼:' or '1'='1

你發現你登入成功了,那怎麼解決呢?下回分解。。。。

相關文章