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)); }