注:wpf连接Oracle数据库有很多方法,这里先说明一种。
1. 背景及版本说明
vs版本:2017
框架:.Net Framwork 4.5.2
2. 步骤
1. 首先,我们需要一个Oracle.ManagedDataAccess.dll 封装文件,这个文件的获取地址:http://xiazai.jb51.net/201908/yuanma/Oracle.ManagedDataAccess(jb51net).rar
下载解压后找到里面的Oracle.ManagedDataAccess.dll文件,一会儿要用到
2. 在自己的wpf项目中新建一个文件,我这里叫dll文件,把刚刚的Oracle.ManagedDataAccess.dll文件复制到这个文件夹下,如图所示。
然后右键wpf项目中的引用,选择“添加引用”,找到dll文件中的Oracle.ManagedDataAccess.dll,确定添加进来,添加后效果如下图
MyOracleConnect.cs 文件
MyOracleConnect.cs 文件里的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引入命名空间
using Oracle.ManagedDataAccess.Client;
using System.Data;
namespace WpfApp1
{
class MyOracleConnect
{
//Oracle连接字符串
private static string strconn = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=XXX;Password=XXXXXX;";
public DataTable QueryDt(string sql)
{
using (OracleConnection conn = new OracleConnection(strconn))
{
try
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
OracleDataAdapter adap = new OracleDataAdapter(sql, conn);
DataTable dt = new DataTable();
adap.Fill(dt);
Console.WriteLine("连接成功");
return dt;
}
catch (Exception ex)
{
Console.WriteLine("连接异常——>" + ex.Message);
return null;
}
finally
{
conn.Close();
}
}
}
}
}
注意里面绿色的这个代码 localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=XXX;Password=XXXXXX;”,
这里标红的5个地方是需要自己更改的,第一个是数据库的ip地址,我这里是本地电脑的数据库,所以写了localhost;第二个是端口号,第三个是服务器名,第四个是你Oracle的用户名,第五个是用户名对应的密码。
4. MainWindow.xaml代码如下:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<Button Name="button1" Content="从数据库读取数据并显示" Click="button1_Click" />
</StackPanel>
</Window>
5. MainWindow.xaml.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
namespace WpfApplication20190917D
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private List<Student> studentList;
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string strSql = "select * from \"CUG_OPCTag\"";
MyOracleConnect moc = new MyOracleConnect();
DataTable dt = moc.QueryDt(strSql);
}
}
}
注意里面绿色的这个代码 “select * from “CUG_OPCTag””;", 这句话是sql语句,
这里标的 CUG_OPCTag,是我自己数据库里的一张表格,你自己数据库有什么表,就写一个表名就行,注意,Oracle调用表名时的sql语句,表名要用双引号。
6. 最后启动wpf项目即可,运行结果:点击界面的按钮后如下,只要能成功在控制台显示"连接成功"即可。
如果不知道怎么启动后在控制台显示,参考我上篇文章的设置,很简单:
最后结果如图
即最后连接成功。
注:这只是其中一种用了Oracle.ManagedDataAccess.dll文件的方法,但是还有用其他dll文件的方法,一样可以连接。