VB6,ACCESS2000开发的程序,
假设数据库名称为db1,当中有一个表为TABLE1,TABLE1中有一个字段NAME,如下
NAME
张三
李四
王五登陆界面有一个下拉列表框
启动以后呢,就把用户名加载到下拉列表框中。
通过以下程序实现:
Option Explicit
Private con As Connection
Private rst As RecordsetPrivate Sub Form_Load()
Set con = New Connection
Set rst = New Recordset
With con
.Provider = "sqloledb"
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=" & App.Path & "\db1.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"
.Open
End With
Dim strSQL As String
strSQL = "SELECT NAME FROM TABLE1;"
rst.Open strSQL, con, 1, 3While Not rst.EOF
Me.Combo1.AddItem Trim(rst(0))
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set con = Nothing
End Sub现在我想把数据库改为ORACLE 9i,我新建了一个数据库,名称为TEST。
ORACLE会自动生成一个表EMP,EMP的ENAME字段如下:
ENAME
----------
SMITH
ALLEN
WARD
JONES
...
现在我想把这个字段加载到刚才的下拉列表中。好想应该先配置ODBC,在网上查了一下午,折腾好长时间还是不行。
请高手详细的指点一下!
配好之后,该如何在VB6中进行编码?请高手赐教!
假设数据库名称为db1,当中有一个表为TABLE1,TABLE1中有一个字段NAME,如下
NAME
张三
李四
王五登陆界面有一个下拉列表框
启动以后呢,就把用户名加载到下拉列表框中。
通过以下程序实现:
Option Explicit
Private con As Connection
Private rst As RecordsetPrivate Sub Form_Load()
Set con = New Connection
Set rst = New Recordset
With con
.Provider = "sqloledb"
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=" & App.Path & "\db1.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"
.Open
End With
Dim strSQL As String
strSQL = "SELECT NAME FROM TABLE1;"
rst.Open strSQL, con, 1, 3While Not rst.EOF
Me.Combo1.AddItem Trim(rst(0))
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set con = Nothing
End Sub现在我想把数据库改为ORACLE 9i,我新建了一个数据库,名称为TEST。
ORACLE会自动生成一个表EMP,EMP的ENAME字段如下:
ENAME
----------
SMITH
ALLEN
WARD
JONES
...
现在我想把这个字段加载到刚才的下拉列表中。好想应该先配置ODBC,在网上查了一下午,折腾好长时间还是不行。
请高手详细的指点一下!
配好之后,该如何在VB6中进行编码?请高手赐教!
是要连接窜吗
StrConn = "Driver={Microsoft ODBC for Oracle};Server=;Uid=;Pwd=;"
连接好了怎么操作还不是和以前一样
With con
.Provider = "sqloledb"
.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=TEST;Uid=SCOTT;Pwd=TIGER;"
.Open
End With
但是程序报错!说明:TEST为数据库的名称,SCOTT,TIGER为ORACLE的默认用户名。
Public CurConn As New ADODB.Connection '数据库连接
Public strConn As String
Sub Main()
'oracle
'Provider=OraOLEDB.Oracle.1;Password=oracle;Persist Security Info=True;User ID=wxc;Data Source=netpoint
'SQL Server
'Provider=SQLOLEDB;Data Source=" & ServerName & ";Initial Catalog=" & DatabaseName & "; User ID=" & LogID & ";Password=" & LogPWD & ";"
strConn = "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;" & _
"Data Source=" & strDataSource & ";" & _
"User ID=" & LogID & ";" & _
"Password=" & LogPWD
With CurConn
.CommandTimeout = 3
.ConnectionTimeout = 3
.ConnectionString = strConn
.Open
.CursorLocation = adUseClient
End With
frm_logon.Show
Exit Sub
errConn:
MsgBox Err.Description, vbCritical + vbOKOnly, "错误"
End Sub
strConn = "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;" & _
"Data Source=" & strDataSource & ";" & _
"User ID=" & LogID & ";" & _
"Password=" & LogPWD
上面的strDataSource,LogID,LogPWD分别写入什么?
LogID,LogPWD用ORACLE的默认用户名SCOTT/TIGER行吗?
strDataSource是数据库的名字?还是本机的IP?
请指教!用不用先配置ODBC数据源?如何配置?
Server代表的是服务器名称或者Ip地址
Uid代表所需要操作数据库的使用者
Pwd代表密码
没有写数据库名字是因为Oracle可以默认设置连接的数据库
Option Explicit
Dim Ws As Workspace
Dim db As Database
Dim Rs As RecordsetPrivate Sub Form_Load()
Set Ws = DBEngine.CreateWorkspace("MyWorkspace", "Admin", "", dbUseODBC)
Set db = Ws.OpenConnection("", dbDriverNoPrompt, False, "ODBC;DSN=ORC1;UID=SCOTT;PWD=TIGER;")
Set Rs = db.OpenRecordset("SELECT * FROM EMP")Do Until Rs.EOF
Text1.Text = Text1.Text & Rs(0)
Rs.MoveNext
Loop
Rs.Close
db.Close
End Sub请不吝赐教!
IP是20.69.1.30
数据库的名字是ORC1配置ODBC的时候,一共有4项要添。
我分别填入:ORC1,连接测试,SCOTT,ORC1
我觉得没有什么问题呀,为什么报错呢。
Set Rs = db.OpenRecordset("SELECT * FROM EMP") '在这一行,报13号错误,类型不匹配。哪位大哥知道,抽点时间,
给小弟讲讲,多谢了!
MSN:[email protected]
strDataSource 数据库名
LogID 用户名
LogPWD 密码
下面给出建用户的方法
DROP USER "用户名" CASCADE;
CREATE USER "用户名" IDENTIFIED BY "密码" DEFAULT TABLESPACE "USERS" ACCOUNT UNLOCK;
GRANT CONNECT TO "用户名";
GRANT DBA TO "用户名";
GRANT RESOURCE TO "用户名";
GRANT UNLIMITED TABLESPACE TO "用户名";
GRANT ALTER ANY TABLE TO "用户名";
GRANT ALTER ANY TRIGGER TO "用户名";
GRANT ALTER SESSION TO "用户名";
GRANT CREATE PROCEDURE TO "用户名";
GRANT CREATE SEQUENCE TO "用户名";
GRANT CREATE SESSION TO "用户名";
GRANT CREATE TABLE TO "用户名";
GRANT CREATE TRIGGER TO "用户名";
GRANT CREATE TYPE TO "用户名";
GRANT CREATE VIEW TO "用户名";
GRANT DELETE ANY TABLE TO "用户名";
GRANT DROP ANY INDEX TO "用户名";
GRANT DROP ANY PROCEDURE TO "用户名";
GRANT DROP ANY SEQUENCE TO "用户名";
GRANT DROP ANY TABLE TO "用户名";
GRANT DROP ANY TRIGGER TO "用户名";
GRANT DROP ANY TYPE TO "用户名";
GRANT DROP ANY VIEW TO "用户名";
GRANT EXECUTE ANY PROCEDURE TO "用户名";
GRANT EXECUTE ANY TYPE TO "用户名";
GRANT SELECT ANY SEQUENCE TO "用户名";
GRANT SELECT ANY TABLE TO "用户名";
EXIT;
你用sqlplus
登录system/密码@数据库名
执行上述语句就可以了
然后你建的表 要建在 你刚建的用户名里
也就是你用你建的用户名登录
然后直接写建表的sql语句就可以了使用oracle要注意 不要用他的默认的名字
那样导入导出会很麻烦
以后维护也不好维护
你这一句之所以出问题 是因为你现在登录的用户跟这个表的用户不是一个
如果你用system登录
你知道那个表名的话
你得写SELECT * FROM 用户名.EMP
所以啊 还是建议你按照我上面得去做
Cn.Open "Provider=OraOLEDB.Oracle.1;Password=TIGER;Persisit Security INFO=True;User ID=SCOTT;Data Source=ORC1"
Set Rs = Cn.Execute("SELECT * FROM EMP")感谢calligrapher(张嘉润)的耐心解答。现在问一个关于ORACLE的问题:
我新建了一个用户ABC,然后我想在这个用户下面建表。
但是在schema的列表中却看不到这个用户ABC,请问这是怎么回事?
然后在里面建一个表
create table aaa
(
a varchar(20) not null,
b varchar(20) not null
);然后你再进入到图形界面 就能看到用户了
因为你用oracle会发现很多跟其他数据库不一样的地方
光看书的话 会很慢的
比sql server难学多了,当然大型数据库都是用oracle的
用你的方法很实用,非常感谢!阁下确实是高手,以后还请多多指教!
马上结帖。