极简.NET连接TimesTen程序

和OCI, PRO*C, JDBC连接Timesten一样,.NET连接TimesTen也非常简单。只不过需要安装的组件比较多些而已。

在运行示例程序之前,需要在Windows上先安装:

1. TimesTen Windows客户端,本例中,由于TimesTen数据库在Windows上,因此完整安装TimesTen

2. Oracle Database or Oracle Data Access Components (ODAC),其中包含了ODP.NET 12.1

3. Miicrosoft Visual Studio,免费的社区版即可

由于.NET是基于OCI的,OCI的驱动已经包含在TimesTen客户端安装中了。

TimesTen文档中与.NET相关的只有一个PDF: Oracle? Data Provider for .NET - Oracle TimesTen In-Memory Database Support User’s Guide, 仅28页,说明绝大部分的内容都与连接Oracle相同。

在TimesTen安装目录下的quickstart/sample_code/odp.net下有示例程序DemoODP.cs, 不过为了简便,我还是提供了一个HelloWorld.cs程序,尽管我从未写过C#代码,感觉和Java有点像。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;
using System.Data.Common;

public class HelloWorld
{

  private static string connStr = "";
  private OracleConnection conn = null;

  public HelloWorld ()
  {
    OracleCommand crtab = null;
    OracleCommand insert = null;
    OracleCommand select = null;
    OracleDataReader reader = null;

      try
    {
      conn = new OracleConnection ();
      conn.ConnectionString = connStr;
      conn.Open ();

      crtab = new OracleCommand ("create table a(a int)", conn);
      crtab.CommandType = CommandType.Text;
      crtab.ExecuteNonQuery ();
      crtab.Dispose ();

      insert = new OracleCommand ("insert into a values(1)", conn);
      insert.CommandType = CommandType.Text;
      insert.ExecuteNonQuery ();
      insert.Dispose ();

      select = new OracleCommand("select max(a) from a", conn);
      select.CommandType = CommandType.Text;
      reader = select.ExecuteReader();
      if (reader.Read())
      {
            object[] values = new object[1];
            reader.GetValues(values);
            if (values[0] != DBNull.Value)
            {
               Console.WriteLine ("Fetched Value is: " + Convert.ToInt32(values[0]));
            }
      }
      reader.Close();
      select.Dispose();

      conn.Close ();
      conn.Dispose ();

    }
    catch (Exception e)
    {
      Console.WriteLine ("Test Failed");
      Console.WriteLine (e.Message);
      Console.WriteLine (e.StackTrace);
      Environment.Exit (-1);
    }
  }

  public static void Main (string[]args)
  {
    connStr =
      //"Data Source=sampledb_1122; user id=appuser; password=appuser";
       "Data Source=localhost/sampledb_1122:timesten_direct;user id=appuser; password=appuser";
    new HelloWorld ();
  }

}

源代码中最关键的是Main中的connStr,可以是TNS形式,即:

connStr = "Data Source=sampledb_1122; user id=appuser; password=appuser";

也可以是easy connect形式:

connStr = "Data Source=localhost/sampledb_1122:timesten_direct;user id=appuser;

进入 “开发人员命令提示”

设置TNS_ADMIN,此路径下有tnsnames.ora文件:

set TNS_ADMIN=D:\TimesTen\tt1122_64\network\admin

我们需要的TNS服务为:

SAMPLEDB_1122 =(DESCRIPTION=(CONNECT_DATA =
(SERVICE_NAME = SAMPLEDB_1122)(SERVER = timesten_direct)))

编译:

csc /out:HelloWorld.exe /reference:D:\app\client\yyxiao\product\12.1.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll HelloWorld.cs

其中D:\app\client\yyxiao\product\12.1.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll为ODAC驱动文件

运行程序:

时间: 2024-10-11 17:47:32

极简.NET连接TimesTen程序的相关文章

极简OCI连接TimesTen程序

针对Oracle数据库的开发,Java和OCI是最常用的两种编程语言,对于TimesTen也是一样. 相较于Pro*C,OCI编程稍显复杂.但OCI提供更细粒度的控制,提供更丰富的功能和更好的性能.因此,对于熟悉C语言的编程人员,为性能和可控制性,以及易于调试,都应该首选OCI而非Pro*C. 和Pro*C一样, OCI也支持用TNS和easy connect string(DSN)来连接TimesTen. 可以通过connect string和TWO_TASK来指定相应的接口. 由于大部分的概

极简ProC连接TimesTen程序

TimesTen也支持Pro*C接口,从编程的角度来看,除了连接字符串的指定外,其它和针对Oracle的开发几乎一样. Pro*C程序连接TimesTen的框架 我们先来看一下Pro*C程序连接TimesTen的框架: int main(int argc, char** argv) { // 连接数据库,可以用以下三种方法之一 // 法一 EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :svc; // 法二 EXEC SQL CONNECT :

开发者和DBA-不通过DSN连接TimesTen

本文给出了一种在客户端不用定义DSN文件,直接连接服务器端DSN的方法. 当然,这并非一种主流的方法,只是为了开拓思路而已,比较有用的场景倒是可以用在ttisql实用程序,用来测试automatic client failover. 这种场景可以参见前文: TimesTen 数据库复制学习:16. 一个缓存组,复制,客户端自动切换的串烧实验 通过ttisql测试 以下为服务器端的DSN文件. [sampledb_1122] Driver=/home/oracle/TimesTen/tt1122/

用哪种命名方法连接TimesTen? TNS还是DSN

先来看一下下面这张概念图: Java程序支持DSN文件连接TimesTen(参见极简Java连接TimesTen程序),也支持绕过DSN直接连接目标数据库(参见开发者和DBA-不通过DSN连接TimesTen). 需要指出, JAVA不支持TNS方式,因为对于TimesTen,TNS的支持是在OCI中实现的,而JAVA并不基于OCI而是基于ODBC. 由于Pro*C基于OCI,因此C的API全都支持TNS和DSN两种方式. 详见极简OCI连接TimesTen程序 和 极简ProC连接TimesT

Spring Boot (七): Mybatis极简配置

Spring Boot (七): Mybatis极简配置 1. 前言 ORM 框架的目的是简化编程中的数据库操作,经过这么多年的发展,基本上活到现在的就剩下两家了,一个是宣称可以不用写 SQL 的 Hibernate ,一个是对 SQL 非常友好的 Mybaties ,,两者各有特点,在企业级系统开发中可以根据需求灵活使用.发现一个有趣的现象:传统企业大都喜欢使用 Hibernate ,互联网行业通常使用 Mybatis . Hibernate 特点就是所有的 SQL 都用 Java 代码来生成

Flask入门小项目 - 搭建极简博客(7)

目录: Flask入门小项目 - 搭建极简博客(1)介绍与项目结构 Flask入门小项目 - 搭建极简博客(2)添加主页 Flask入门小项目 - 搭建极简博客(3)添加登录.登出功能 Flask入门小项目 - 搭建极简博客(4)添加注册功能 Flask入门小项目 - 搭建极简博客(5)添加写文章功能 Flask入门小项目 - 搭建极简博客(6)添加删除文章功能 Flask入门小项目 - 搭建极简博客(7)部署到服务器,实现外网访问 完整程序点这 零.效果 域名的话要等它备案完才能访问... 一

React Native的极简手册

安装入门可以参考:React Native官方文档(http://reactnative.cn/docs/0.31/tutorial.html#content). NodeJS知识储备:参考<NodeJS入门>(https://leanpub.com/nodebeginner-chinese).(尊重知识,请购买原版). 书籍:<React Native入门与实战> 代码示例:30天学习React Native教程(https://github.com/fangwei716/30-

反向传播神经网络极简入门

反向传播神经网络极简入门 我一直在找一份简明的神经网络入门,然而在中文圈里并没有找到.直到我看到了这份162行的Python实现,以及对应的油管视频之后,我才觉得这就是我需要的极简入门资料.这份极简入门笔记不需要突触的图片做装饰,也不需要赘述神经网络的发展历史:要推导有推导,要代码有代码,关键是,它们还对得上.对于欠缺的背景知识,利用斯坦福大学的神经网络wiki进行了补全. 单个神经元 神经网络是多个“神经元”(感知机)的带权级联,神经网络算法可以提供非线性的复杂模型,它有两个参数:权值矩阵{W

Resty 一款极简的restful轻量级的web框架

https://github.com/Dreampie/Resty Resty 一款极简的restful轻量级的web框架 开发文档 如果你还不是很了解restful,或者认为restful只是一种规范不具有实际意义,推荐一篇osc两年前的文章:RESTful API 设计最佳实践 和 Infoq的一篇极其理论的文章 理解本真的REST架构风格 虽然有点老,介绍的也很简单,大家权当了解,restful的更多好处,还请google 拥有jfinal/activejdbc一样的activerecor