在线等待..., C# winform怎样访问指定服务器odbc,oracle数据库

yufei8312 2009-04-29 10:40:38
请教各位大虾:
程序用的数据库是oracle的,不想让客户端程序直接访问正式数据库。现在想用局域网中的一台电脑通过ODBC连接真实数据库,然后每个客户端都访问此电脑的ODBC服务。
不知道客户端程序怎样访问此电脑的ODBC。望各位大虾帮帮忙!急!~~!~~!~谢过!
...全文
416 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujie2007 2009-10-19
  • 打赏
  • 举报
回复
快意一剑 2009-05-01
  • 打赏
  • 举报
回复
楼主的想法就有问题。ODBC只是访问数据库的方式,通过ODBC可以访问不同的数据,假设后台数据库由Oracle变成了SQL Server,通过ODBC访问数据库就不需要修改客户端程序。而楼主的意思是客户端不直接访问数据库,由ODBC这台机器访问数据库。所以楼主的程序需要在ODBC这台机器上部署一台中间服务层,用中间服务层访问数据库。客户端访问中间服务层。
yufei8312 2009-04-30
  • 打赏
  • 举报
回复
uphold myself.
yufei8312 2009-04-29
  • 打赏
  • 举报
回复
我该怎样指向这个“服务器”呢?
我在CodeProject上看到这样一个连接串:
("Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;"
"Uid=MyUsername;Pwd=MyPassword;");
现在还不太明白这里Server是不是就是指向远程ODBC,刚才试了试,报错了,未能找到数据源。
yufei8312 2009-04-29
  • 打赏
  • 举报
回复
多谢jingshuaizh的用心帮助,代码很详细,
const string connstr = "DSN=chicoDB;UID=System;Pwd=zaqwsx;";
这样写,好像不能在客户端程序中访问到这个“服务器”的dsn。
蓝海D鱼 2009-04-29
  • 打赏
  • 举报
回复

const string connstr = "DSN=chicoDB;UID=System;Pwd=zaqwsx;";
OdbcConnection cn= new OdbcConnection(connstr);
cn.Open();
// 这里的基本上都是string类型,出了income是double
String sqlInsert = "insert into System.client values('" + clientId + "','" + id + "','" + name + "',to_char('" + sex + "'),'" + tel + "'," + income + ",'" + job + "')";
OdbcCommand oc = new OdbcCommand(slqInsert, cn);
oc.CommandType = System.Data.CommandType.Text;
int rows =oc.ExecuteNonQuery();
System.Console.WriteLine(rows);// 打印被影响的行数
String sql = "select * from system.client";
oc.CommandText = sql;
OdbcDataReader dbreader= oc.ExecuteReader();
//这个Reader好像不能脱机操作..(具体没有查)
object[] o = null;
if (dbreader.HasRows)
{
o = new object[dbreader.FieldCount];
dbreader.GetValues(o);
}
// 这里你自己写个打印语句将查询出来的记录打印出来吧..
dbreader.Close();
oc.Dispose();
cn.Close();
const string connstr = "DSN=chicoDB;UID=System;Pwd=zaqwsx;";
OdbcConnection cn= new OdbcConnection(connstr);
cn.Open();
// 这里的基本上都是string类型,出了income是double
String sqlInsert = "insert into System.client values('" + clientId + "','" + id + "','" + name + "',to_char('" + sex + "'),'" + tel + "'," + income + ",'" + job + "')";
OdbcCommand oc = new OdbcCommand(slqInsert, cn);
oc.CommandType = System.Data.CommandType.Text;
int rows =oc.ExecuteNonQuery();
System.Console.WriteLine(rows);// 打印被影响的行数
String sql = "select * from system.client";
oc.CommandText = sql;
OdbcDataReader dbreader= oc.ExecuteReader();
//这个Reader好像不能脱机操作..(具体没有查)
object[] o = null;
if (dbreader.HasRows)
{
o = new object[dbreader.FieldCount];
dbreader.GetValues(o);
}
// 这里你自己写个打印语句将查询出来的记录打印出来吧..
dbreader.Close();
oc.Dispose();
cn.Close();
myrroom 2009-04-29
  • 打赏
  • 举报
回复
没用过oracle,友情帮顶,不过我看LS的挺详细的啊
蓝海D鱼 2009-04-29
  • 打赏
  • 举报
回复
ODBC连接Oracle 9i, C#连接字符串收藏
1.首先装好你的Oracle 9i。然后再控制面板->管理工具->数据源(odbc)

2.双击数据源(odbc)->选择系统DSN->添加->Microsoft ODBC for Oracle , 数据源名称:chicoDB (这个是用来在C#中写连接字符串用的), 服务器名称:chicoDB (这个是你安装Oracle的时候建立的sid名称即数据库名)。然后确定

3.打开你的pl/sql 建立几个表(新建->表)..我使用的system帐号登陆权限为SYSDBA,数据库为chicoDB.(不过使用PL/SQL好像不用用户名密码也可以登陆)比如我建立的是client 表。我的所有者为system.在列中输入:CLIENTID (nvarchar(11)),ID(nvarchar(11)),NAME(nvarchar(50)),SEX(char(1)),TEL(nvarchar(11)),INCOME(NUMBERIC),JOB(nvarchar(50))。

4.建立一个c#工程项目,连接字符串这样写:const string connstr = "DSN=chicoDB;UID=System;Pwd=zaqwsx;";

前面要using System.Data.Odbc; 想建立连接的话就写:OdbcConnection cn = new OdbcConnection(connstr);

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧