首页 > 技术文章 > WPF应用Access数据库

AlgrithmsRookie 2017-11-23 20:43 原文

WPF应用Access数据库

        现在Access数据库中有表GuestTable,其中的字段如下图所示,现在需要应用WPF技术为此表制作一个数据库管理窗口,实现对此数据库中的数据进行数据的增、删、改和查操作。

     对数据的操作首先需要获取对数据库文件的连接,创建与数据库连接的程序如下所示,其中“..//..//DataBase//InkColorMatchingDB.mdb”可以替换为自己项目中Access数据库相对于Bin/Debug/**.exe可执行文件的相对路径。

        private OleDbConnection GetConnection()
        {
            string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..//..//DataBase//InkColorMatchingDB.mdb;";
            OleDbConnection con = new OleDbConnection(strcon);
            return con;
        }

接下来应用所得到的对数据库的连接来执行SQL语句增加条目的操作,如下程序所示。

 1                 try
 2                 {
 3                     OleDbConnection con = GetConnection();//获得对数据库的连接
 4                     con.Open();//打开数据库连接
 5                     string judge = " SELECT COUNT(*) FROM GuestTable WHERE 公司名称='" + guestName_TB.Text.ToString() + "';";//检测是否已经存在所输入的公司名称
 6                     OleDbCommand judgecmd = new OleDbCommand(judge, con);//对数据库执行SQL语句操作,并且获得返回的结果
 7                     int rowNum = (int)judgecmd.ExecuteScalar();
 8                     if(rowNum==0)
 9                     {
10                         string insertstr = "INSERT INTO GuestTable(公司名称, 地址,省,市, 邮编,国家,电话号码,传真号,联系人,电子邮件) VALUES ('";
11                         insertstr += guestName_TB.Text.ToString() + "', '";
12                         insertstr += guestAddress_TB.Text.ToString() + "','";
13                         insertstr += guestProvince_TB.Text.ToString() + "','";
14                         insertstr += guestCity_TB.Text.ToString() + "','";
15                         insertstr += guestPostCode_TB.Text.ToString() + "','";
16                         insertstr += guestCountry_TB.Text.ToString() + "','";
17                         insertstr += guestPhoneNum_TB.Text.ToString() + "','";
18                         insertstr += guestFax_TB.Text.ToString() + "','";
19                         insertstr += guestContactPerson_TB.Text.ToString() + "','";
20                         insertstr += guestEmail_TB.Text.ToString() + "');";//整理插入数据的Sql语句
21                         OleDbCommand insertcmd = new OleDbCommand(insertstr, con);
22                         insertcmd.ExecuteNonQuery();
23                         con.Close();
24                     }
25                     else
26                     {
27                         throw new Exception("所输入客户名称重复!");
28                     }
29                 }catch(Exception ex)
30                 {
31                     
32                     MessageBox.Show(ex.Message);
33                     return;
34                 }

删除数据的操作如下:

 1                 try
 2                 {
 3                     //连接数据库,获取数据显示在客户列表中
 4                     OleDbConnection mycon = GetConnection();
 5                     mycon.Open();
 6                     string sql = "delete * from GuestTable where 公司名称='" + name+"';";
 7                     OleDbCommand myCommand = new OleDbCommand(sql, mycon);
 8                     myCommand.ExecuteNonQuery(); 
 9                     mycon.Close();
10                 }
11                 catch (Exception ex)
12                 {
13                     throw (new Exception("删除数据出现错误:" + ex.Message));
14                 }

       更新数据的操作如下(其中如this.guestName_TB.Text.ToString()者均为从界面上所获得的用户输入的数值):

 1                 //用到了我前面写的那个得到数据库连接的函数
 2                 OleDbConnection conn = GetConnection(); //getConn():得到连接对象,
 3                 conn.Open();
 4                 //确定我们需要执行的SQL语句,本处是UPDATE语句!
 5                 sqlstr = "UPDATE GuestTable SET ";
 6                 sqlstr += "公司名称='" + this.guestName_TB.Text.ToString() + "',";
 7                 sqlstr += "地址='" + this.guestAddress_TB.Text.ToString() + "',";
 8                 sqlstr += "省='" + this.guestProvince_TB.Text.ToString() + "',";
 9                 sqlstr += "市='" + this.guestCity_TB.Text.ToString() + "',";
10                 sqlstr += "邮编='" + this.guestPostCode_TB.Text.ToString() + "',";
11                 sqlstr += "国家='" + this.guestCountry_TB.Text.ToString() + "',";
12                 sqlstr += "电话号码='" + this.guestPhoneNum_TB.Text.ToString() + "',";
13                 sqlstr += "传真号='" + this.guestFax_TB.Text.ToString() + "',";
14                 sqlstr += "联系人='" + this.guestContactPerson_TB.Text.ToString() + "',";
15                 sqlstr += "电子邮件='" + this.guestEmail_TB.Text.ToString() + "' ";
16                 sqlstr += " where 公司名称='" + this.name+"';";
17                 //定义command对象,并执行相应的SQL语句
18                 OleDbCommand myCommand = new OleDbCommand(sqlstr, conn);
19                 myCommand.ExecuteNonQuery(); //执行非查询语句
20                 conn.Close();

 如果需要查询数据库中的数据的话,则代码如下:

            //获取数据库中的数据
            try
            {
                //连接数据库,获取数据显示在客户列表中
                OleDbConnection mycon = GetConnection();
                mycon.Open();
                string sql = "select * from GuestTable;";
                OleDbDataAdapter adapter = new OleDbDataAdapter();
                adapter.SelectCommand = new OleDbCommand(sql, mycon);
                adapter.Fill(guestData, "GuestTable");//其中guestData为DataSet类对象其中存储查询到的所有数据,“GuestTabel”为查询所针对的数据表
                mycon.Close();
            }
            catch(Exception e)
            {
                throw (new Exception("读取数据库内的数据出错:" + e.Message));
            }

 

推荐阅读