WPF连接Oracle数据库
前言
最近想要实现一个简单的桌面端记账工具,想到了使用wpf进行开发,于是今天花点时间研究了一下与数据库的连接
开发工具
VS2019,.net framework 4.7,Oracle 11.2
具体步骤
Oracle的配置
oracle的安装和下载不用多说,度娘上很多类似的教程,这里就先跳过了。
安装好后,开始创建用户,并给其分配相应的表空间:进入sqlplus(按下win键后直接数据sqlplus就可以进入了),输入用户名sys,密码默认是change_on_install as sysdba(你没看错,真的是这么长),进入如下界面
然后进行分配表空间,创建角色和把空间分配给对应的角色,这里可以参照这位大佬的:Oracle起步---创建临时表空间/表空间/创建用户/授权
这里要注意的是创建表空间的时候是要创建两个的,一个是临时表空间,一个是实际表空间,这里不做过多赘述,上面的大佬写的很清楚。我这里定义了一个用户manageruser,密码是123456,这个待会会用到。
调用数据库代码的编写
数据库的角色建好了,那么就要在wpf中编写相应代码来调用了,编写如下代码:
public static class DBHelper { private static string connectionString = "Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)));User ID = manageuser; Password=123456;"; public static void Connect() { OracleConnection oracleConnection = new OracleConnection(connectionString); try { oracleConnection.Open(); MessageBox.Show("连接成功", "提示"); } catch (Exception) { MessageBox.Show("连接失败", "提示"); throw; } finally { oracleConnection.Close(); } } }
插入这段代码后,可能会在OracleConnection那里提示缺少命名空间的引用,根据vs的建议引用了
using System.Data.OracleClient;
之后,它又会提示这个方法是过时的,如图:
这不神经病吗(小声逼逼),这种方法其实是没问题的,换个命名空间引用就可以了,这里可以参照这位大佬的:System.Data.OracleClient.OracleConnection已过时
即在oracle安装目录下找到Oracle.Dataaccess.dll,将其添加引用,然后再把原来引用的命名空间换成 usingOracle.DataAccess.Client; 就可以了。
这里再多说一句,上面代码中的connectionString是由三个部分组成的,oracle连接地址,登录用户名,登录密码,第一个oracle连接地址可以在oracle安装目录下的product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora 中找到:
端口号啥的新手不建议改,改了会比较麻烦。
登录用户名和登录密码就是上面创建角色时新建的用户名和密码。
测试
配置工作已经完成了,跑一下试试
成功啦 *^-^*!
PS:如果运行过程中出现了报错:【未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。试图加载格式不正确的程序】,可以参照这位大佬的解决方案:未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"
参考资料:
1.https://www.cnblogs.com/ZXdeveloper/p/5140416.html
2.https://www.cnblogs.com/xmaomao/p/3273102.html
3.https://blog.csdn.net/qq_39704682/article/details/91376440
4.https://www.cnblogs.com/wangfuyou/p/5976558.html