zdf2000

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  10 随笔 :: 48 文章 :: 7 评论 :: 0 引用

2008年12月30日 #

    Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某个类的时候,要用类加载器载入内存。
    这四个类加载器分别为:Bootstrap ClassLoaderExtension ClassLoaderAppClassLoader
URLClassLoader,他们的作用其实从名字就可以大概推测出来了。其中AppClassLoader在很多地方被叫做System ClassLoader

Bootstrap ClassLoader是在JVM开始运行的时候加载java的核心类,是用C++编写的,它用来加载核心类库,在JVM源代码中这样写道:
static const char classpathFormat[] =
"%/lib/rt.jar:"
"%/lib/i18n.jar:"
"%/lib/sunrsasign.jar:"
"%/lib/jsse.jar:"
"%/lib/jce.jar:"
"%/lib/charsets.jar:"
"%/classes";
Extension ClassLoader是用来加载扩展类,即/lib/ext中的类。
AppClassLoader用来加载Classpath的类,是和我们关系最密切的类。
URLClassLoader用来加载网络上远程的类,暂且不讨论。

它们之间的关系:

1.Parent-Child,按顺序从大到小。不是简单的继承关系。

2.ClassLoader有个getParent的方法,但是Ext ClassLoader调用后得到的是null,bootstrap是JVM自己的,用户看不到。

3.classloader的委托机制:当等级比较低的ClassLoader要加载某个类的时候,它首先会请求Parent加载器来加载,Parent再请求它的Parent
比如现在Ext要加载了,它往上请求。如果最大的Bootstrap找不到,那么Boot会叫Ext自己找找,Ext找不到,是不会让下一级的App去找的,此时就报出ClassNotFoundException

4.类A调用类B,B会要求调用它的类的类加载器来加载它,也就是B会要求加载A的加载器来加载B。这就会有个问题,如果他们在一起,那没关系,肯定某个classloader会把它们俩都加载好。但是如果A在/lib/ext文件夹中,而B在Classpath中呢?过程是这样的首先加载A,那么一层层上到Bootstrap Classloader,boot没找到所以ext自己找,找到了,没问题;加载B,因为A调用了B,所以也从bootstrap来找,没找到,然后A的ext classloader来找还是没找到,但是再也不会往下调用了,于是报出ClassNotFoundException。
但是现实生活中有很多应用,比如JDBC核心方法在核心库而驱动在扩展库,是必定在两个地方的,那怎么办呢?要用到Context ClassLoader我们在建立一个线程Thread的时候,可以为这个线程通过setContextClassLoader方法来指定一个合适的classloader作为这个线程的context classloader,当此线程运行的时候,我们可以通过getContextClassLoader方法来获得此context classloader,就可以用它来载入我们所需要的Class。默认的是system classloader。利用这个特性,我们可以“打破”classloader委托机制了,父classloader可以获得当前线程的context classloader,而这个context classloader可以是它的子classloader或者其他的classloader,那么父classloader就可以从其获得所需的 Class,这就打破了只能向父classloader请求的限制了。这个机制可以满足当我们的classpath是在运行时才确定,并由定制的 classloader加载的时候,由system classloader(即在jvm classpath中)加载的class可以通过context classloader获得定制的classloader并加载入特定的class(通常是抽象类和接口,定制的classloader中是其实现),例如web应用中的servlet就是用这种机制加载的.

http://www.blogjava.net/clraychen/archive/2008/02/20/180868.html
posted @ 2008-12-30 10:07 透明_人 阅读(29) | 评论 (0)编辑

2008年12月2日 #

更正提示:
以前在发表这篇文章时,并没有经过测试,只是到网上查找了相关的资料,现在看来错误还不少,因此对本文进行了修改。

写这篇文章缘于http://community.csdn.net/Expert/topic/4631/4631305.xml?temp=.6259119一帖,
我在查看ORACLE网站、MSDN2005及注册表之后,小有收获,特写此文,希望对各位有所帮助。
好了,废话结束,现在看正文:

1.ODBC方式
我们可以在"我的电脑->控制面板->(性能和维护->)管理工具->数据源(ODBC)->系统DSN->添加",查看系统中已经安装好的ODBC驱动,其中就包含了“Microsoft ODBC Driver for Oracle”。
连接字符串格式:
Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;
要求:必须安装oracle 7.3版(或更高)的客户端。

2.OLEDB方式
请大家打开注册表编辑器regedit,搜索oracle即可以搜索到以下键:
Microsoft OLE DB Provider for Oracle
HKEY_CLASSES_ROOT\CLSID\{e8cc4cbe-fdff-11d0-b865-00a0c9081c1d}\OLE DB Provider
HKEY_CLASSES_ROOT\MSDAORA
所以,只要你安装了合适版本的MDAC,那么起码就已经可以使用OLEDB来访问ORACLE了。
连接字符串格式:
Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;
要求:必须安装oracle 8i版(或更高)的客户端。

3.System.Data.OracleClient方式
以上2种都是比较通用的方式,我们再来看看M$专门为ORACLE写的类。
请大家打开MSDN2005,输入地址
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/054f76b9-1737-43f0-8160-84a00a387217.htm(您也可以通过目录、索引或者搜索来找到)
《Oracle .NET Framework 数据提供程序的系统要求》(即System.Data.OracleClient命名空间中的类),摘要如下:
Oracle .NET Framework 数据提供程序需要 Microsoft 数据访问组件 (MDAC) 2.6 版或更高版本。建议使用 MDAC 2.8 SP1。
还必须安装 Oracle 8i Release 3 (8.1.7) 客户端或更高版本。
Oracle 9i 版本之前的 Oracle 客户端软件无法访问 UTF16 数据库,因为 UTF16 是 Oracle 9i 中的一项新功能。要使用此功能,必须将客户端软件升级到 Oracle 9i 或更高版本。
哈哈,M$其实没有我们想象中的勤奋,他只是帮ORACLE CLIENT做了个包装而已。

4.Oracle Data Provider for .net(ODP.NET)
我们再到ORACLE的老家转转,可以发现他在很多地方都吹嘘ODP.NET,看看它有些什么要求才能用吧。
请大家在浏览器中输入地址(ORACLE的网站有点慢,请不要急)
http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install
Q: What do I need to have installed on my client machine to have ODP.NET work?
A: You will require the following:
Windows 2000, Windows XP Professional, or Windows Server 2003
Microsoft .NET Framework 1.0 or higher
Oracle9i Client Release 2 (9.2) or higher
Oracle Net Services (included with the client)
Oracle Services for Microsoft Transaction Server, Release 2 (9.2) or higher. This is required for applications using distributed transacations.
简单翻译:
如果你用ODP.NET来访问ORACLE数据库,你需要以下条件:
操作系统:WIN2K XP 2003
.NET FRAMEWORK 1.0以上
ORACLE9I以上的客户端
连接字符串格式:
Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;Integrated Security=no;

5.Core Labs OraDirect (.NET)
www.connectionstrings.com上发现了一个不用安装oracle客户端而直接访问oracle的.net类库,可以免费使用一个月,但是价格比较贵。网址是:http://crlab.com/oranet/,如果有兴趣可以去看看。
连接字符串格式:
User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;
要求:花钱购买类库

6.第3方的观点:
http://www.fawcette.com/vsm/2003_07/magazine/columns/databasedesign/
有一篇文章叫<<Take Advantage of Oracle in .NET>>
讲了如何在可视环境下(也就是用鼠标点、拖等操作)访问ORACLE 。

好了,现在来做个总结
访问方式 连接字符串 要求
ODBC Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword; Oracle Client 7.3以上版本
OLEDB Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword; Oracle Client 8i以上版本
System.Data.OracleClient Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;

MDAC 2.6
Oracle Client 8i Release 3 (8.1.7) 以上版本

ODP.NET Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;Integrated Security=no; Oracle Client 9i以上版本
OraDirect .net User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0; 不需要安装Oracle客户端
必须购买许可证

好了,感谢您坚持看完本文,希望没有浪费您的时间,对您有所帮助。


http://blog.csdn.net/xrwang/archive/2006/03/26/639228.aspx

posted @ 2008-12-02 13:28 透明_人 阅读(62) | 评论 (0)编辑

ACCESS
ODBC
标准安全 "Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\mydatabase.mdb; Uid=Admin; Pwd=; "
工作组 "Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\mydatabase.mdb; SystemDB=C:\mydatabase.mdw; "
独占 "Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\mydatabase.mdb; Exclusive=1; Uid=admin; Pwd="
OLE DB, OleDbConnection (.NET)
标准安全 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\somepath\mydb.mdb; User Id=admin; Password=; "
工作组 (system database) "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\somepath\mydb.mdb; Jet OLEDB:System Database=system.mdw; "
使用密码 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\somepath\mydb.mdb; Jet OLEDB:Database Password=MyDbPassword; "
 
Oracle
ODBC
新版本 "Driver={Microsoft ODBC for Oracle}; Server=OracleServer.world; Uid=Username; Pwd=asdasd; "
旧版本 "Driver={Microsoft ODBC Driver for Oracle}; ConnectString=OracleServer.world; Uid=myUsername; Pwd=myPassword; "
OLE DB, OleDbConnection (.NET)
标准安全 "Provider=msdaora; Data Source=MyOracleDB; User Id=UserName; Password=asdasd; "
This one's from Microsoft, the following are from Oracle
标准安全 "Provider=OraOLEDB.Oracle; Data Source=MyOracleDB; User Id=Username; Password=asdasd; "
信任的连接 "Provider=OraOLEDB.Oracle; Data Source=MyOracleDB; OSAuthent=1; "
OracleConnection (.NET)
标准 "Data Source=MyOracleDB; Integrated Security=yes; "
This one works only with Oracle 8i release 3 or later
指定用户名和密码 "Data Source=MyOracleDB; User Id=username; Password=passwd; Integrated Security=no; "
This one works only with Oracle 8i release 3 or later
定义OracleConnection对象 C#:
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "my connection string";
oOracleConn.Open();
VB.NET:
Imports System.Data.OracleClient
Dim oOracleConn As OracleConnection = New OracleConnection()
oOracleConn.ConnectionString = "my connection string"
oOracleConn.Open()
Core Labs OraDirect (.NET)
标准 "User ID=scott; Password=tiger; Host=ora; Pooling=true; Min Pool Size=0; Max Pool Size=100; Connection Lifetime=0"
Data Shape
微软数据模型 "Provider=MSDataShape.1; Persist Security Info=False; Data Provider=MSDAORA; Data Source=orac; user id=username; password=mypw"
4
MySQL
MyODBC
MyODBC 2.50 本地数据库 "Driver={mySQL}; Server=localhost; Option=16834; Database=mydatabase; "
MyODBC 2.50 远程数据库: "Driver={mySQL}; Server=data.domain.com; Port=3306; Option=131072; Stmt=; Database=my-database; Uid=username; Pwd=password; "
MyODBC 3.51 本地数据库 "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=myDatabase; USER=myUsername; PASSWORD=myPassword; OPTION=3; "
MyODBC 3.51 远程数据库 "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=data.domain.com; PORT=3306; DATABASE=myDatabase; USER=myUsername; PASSWORD=myPassword; OPTION=3; "
OLE DB, OleDbConnection (.NET)
标准 "Provider=MySQLProv; Data Source=mydb; User Id=UserName; Password=asdasd; "
Connector/Net 1.0 (.NET)
标准 "Server=Server; Database=Test; Uid=UserName; Pwd=asdasd; "
Download the driver at MySQL Developer Zone
指定端口 "Server=Server; Port=1234; Database=Test; Uid=UserName; Pwd=asdasd; "
Default port is 3306. Enter value -1 to use a named pipe connection.
定义mysqlclient 连接对象 C#:
using MySql.Data.MySqlClient;
MySqlConnection oMySqlConn = new MySqlConnection();
oMySqlConn.ConnectionString = "Server=Server; Database=Test; Uid=UserName; Pwd=asdasd; ";
oMySqlConn.Open();
VB.NET:
Imports MySql.Data.MySqlClient
Dim oMySqlConn As MySqlConnection = New MySqlConnection()
oMySqlConn.ConnectionString = "Server=Server; Database=Test; Uid=UserName; Pwd=asdasd; "
oMySqlConn.Open()
MySqlConnection (.NET)
eInfoDesigns.dbProvider "Data Source=server; Database=mydb; User ID=username; Password=pwd; Command Logging=false"
This one is used with eInfoDesigns dbProvider, an add-on to .NET
定义MySqlConnection连接对象 C#:
using eInfoDesigns.dbProvider.MySqlClient;
MySqlConnection oMySqlConn = new MySqlConnection();
oMySqlConn.ConnectionString = "my connection string";
oMySqlConn.Open();
VB.NET:
Imports eInfoDesigns.dbProvider.MySqlClient
Dim oMySqlConn As MySqlConnection = New MySqlConnection()
oMySqlConn.ConnectionString = "my connection string"
oMySqlConn.Open()
SevenObjects MySqlClient (.NET)
标准 "Host=server; UserName=myusername; Password=mypassword; Database=mydb; "
This is a freeware ADO.Net data provider from SevenObjects
Core Labs MySQLDirect (.NET)
标准 "User ID=root; Password=pwd; Host=localhost; Port=3306; Database=test; Direct=true; Protocol=TCP; Compress=false; Pooling=true; Min Pool Size=0; Max Pool Size=100; Connection Lifetime=0"
 
Interbase
ODBC, Easysoft
本地计算机 "Driver={Easysoft IB6 ODBC}; Server=localhost; Database=localhost:C:\mydatabase.gdb; Uid=username; Pwd=password"
远程计算机 "Driver={Easysoft IB6 ODBC}; Server=ComputerName; Database=ComputerName:C:\mydatabase.gdb; Uid=username; Pwd=password"
ODBC, Intersolv
本地计算机 "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)}; Server=localhost; Database=localhost:C:\mydatabase.gdb; Uid=username; Pwd=password"
远程计算机 "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)}; Server=ComputerName; Database=ComputerName:C:\mydatabase.gdb; Uid=username; Pwd=password"
OLE DB, SIBPROvider
标准 "provider=sibprovider; location=localhost:; data source=c:\databases\gdbs\mygdb.gdb; user id=SYSDBA; password=masterkey"
指定字符集 "provider=sibprovider; location=localhost:; data source=c:\databases\gdbs\mygdb.gdb; user id=SYSDBA; password=masterkey; character set=ISO8859_1"
指定规则 "provider=sibprovider; location=localhost:; data source=c:\databases\gdbs\mygdb.gdb; user id=SYSDBA; password=masterkey; role=DIGITADORES"
 
IBM DB2
OLE DB, OleDbConnection (.NET) from ms
TCP/IP "Provider=DB2OLEDB; Network Transport Library=TCPIP; Network Address=XXX.XXX.XXX.XXX; Initial Catalog=MyCtlg; Package Collection=MyPkgCol; Default Schema=Schema; User ID=MyUser; Password=MyPW"
APPC "Provider=DB2OLEDB; APPC Local LU Alias=MyAlias; APPC Remote LU Alias=MyRemote; Initial Catalog=MyCtlg; Package Collection=MyPkgCol; Default Schema=Schema; User ID=MyUser; Password=MyPW"
IBM's OLE DB Provider (shipped with IBM DB2 UDB v7 or above)
TCP/IP "Provider=IBMDADB2; Database=sample; HOSTNAME=db2host; PROTOCOL=TCPIP; PORT=50000; uid=myUserName; pwd=myPwd;"
ODBC
标准 "driver={IBM DB2 ODBC DRIVER}; Database=myDbName; hostname=myServerName; port=myPortNum; protocol=TCPIP; uid=myUserName; pwd=myPwd"
5
Sybase
ODBC
标准 Sybase System 12 (or 12.5) Enterprise Open Client "Driver={SYBASE ASE ODBC Driver}; Srvr=Aron1; Uid=username; Pwd=password"
标准 Sybase System 11 "Driver={SYBASE SYSTEM 11}; Srvr=Aron1; Uid=username; Pwd=password; Database=mydb"
Intersolv 3.10 "Driver={INTERSOLV 3.10 32-BIT Sybase}; Srvr=Aron1; Uid=username; Pwd=password;"
Sybase SQL Anywhere (former Watcom SQL ODBC driver) "ODBC; Driver=Sybase SQL Anywhere 5.0; DefaultDir=c:\dbfolder\; Dbf=c:\mydatabase.db; Uid=username; Pwd=password; Dsn="""""
OLE DB
Adaptive Server Anywhere (ASA) "Provider=ASAProv; Data source=myASA"
Adaptive Server Enterprise (ASE) with Data Source .IDS file "Provider=Sybase ASE OLE DB Provider; Data source=myASE"
Adaptive Server Enterprise (ASE) "Provider=Sybase.ASEOLEDBProvider; Srvr=myASEserver,5000; Catalog=myDBname; User Id=username; Password=password"
- some reports on problem using the above one, try the following as an alternative -

"Provider=Sybase.ASEOLEDBProvider; Server Name=myASEserver,5000; Initial Catalog=myDBname; User Id=username; Password=password"
This one works only from Open Client 12.5 where the server port number feature works,following fully qualified connection strings to be used without definingfony .IDS Data Source files.

AseConnection (.NET)
标准 "Data Source='myASEserver'; Port=5000; Database='myDBname'; UID='username'; PWD='password'; "
定义AseConnection连接对象 C#:
using Sybase.Data.AseClient;
AseConnection oCon = new AseConnection();
oCon.ConnectionString="my connection string";
oCon.Open();
VB.NET:
Imports System.Data.AseClient
Dim oCon As AseConnection = New AseConnection()
oCon.ConnectionString="my connection string"
oCon.Open()
 
Informix
ODBC
Informix 3.30 "Dsn=''; Driver={INFORMIX 3.30 32 BIT}; Host=hostname; Server=myserver; Service=service-name; Protocol=olsoctcp; Database=mydb; UID=username; PWD=myPwd"
Informix-CLI 2.5 "Driver={Informix-CLI 2.5 (32 Bit)}; Server=myserver; Database=mydb; Uid=username; Pwd=myPwd"
OLE DB
IBM Informix OLE DB Provider "Provider=Ifxoledbc.2; password=myPw; User ID=myUser; Data Source=dbName@serverName; Persist Security Info=true"
 
Ingres
ODBC
DSN-less "Provider=MSDASQL.1; DRIVER=Ingres; SRVR=xxxxx; DB=xxxxx; Persist Security Info=False; uid=xxxx; pwd=xxxxx; SELECTLOOPS=N; Extended Properties="""SERVER=xxxxx; DATABASE=xxxxx; SERVERTYPE=INGRES""
 
Mimer SQL
ODBC
标准安全 "Driver={MIMER}; Database=mydb; Uid=myuser; Pwd=mypw; "
提示输入用户名和密码 "Driver={MIMER}; Database=mydb;"
 
Lightbase
标准
标准 "user=USERLOGIN; password=PASSWORD; UDB=USERBASE; server=SERVERNAME"
 
PostgreSQL
Core Labs PostgreSQLDirect (.NET)
标准 "User ID=root; Password=pwd; Host=localhost; Port=5432; Database=testdb; Pooling=true; Min Pool Size=0; Max Pool Size=100; Connection Lifetime=0"
PostgreSQL driver
标准 "DRIVER={PostgreSQL}; SERVER=ipaddress; port=5432; DATABASE=dbname; UID=username; PWD=password; "
Npgsql by pgFoundry (.NET)
SSL activated "Server=127.0.0.1; Port=5432; Userid=myuserid; password=mypw; Protocol=3; SSL=true; Pooling=true; MinPoolSize=3; MaxPoolSize=20; Encoding=UNICODE; Timeout=20; SslMode=Require"
Without SSL "Server=127.0.0.1; Port=5432; Userid=myuserid; password=mypw; Protocol=3; SSL=false; Pooling=true; MinPoolSize=1; MaxPoolSize=20; Encoding=UNICODE; Timeout=15; SslMode=Disable"
 
Paradox
ODBC
5.X "Driver={Microsoft Paradox Driver (*.db )}; DriverID=538; Fil=Paradox 5.X; DefaultDir=c:\pathToDb\; Dbq=c:\pathToDb\; CollatingSequence=ASCII"
7.X "Provider=MSDASQL.1; Persist Security Info=False; Mode=Read; Extended Properties='DSN=Paradox; DBQ=C:\myDb; DefaultDir=C:\myDb; DriverId=538; FIL=Paradox 7.X; MaxBufferSize=2048; PageTimeout=600; '; Initial Catalog=C:\myDb"
OleDbConnection (.NET)
标准 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\myDb; Extended Properties=Paradox 5.x;"
 
DNS
ODBC
DSN "DSN=myDsn; Uid=username; Pwd=; "
File DSN "FILEDSN=c:\myData.dsn; Uid=username; Pwd=;"
6
Firebird
ODBC - IBPhoenix Open Source
标准 "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=D:\FIREBIRD\examples\TEST.FDB"
.NET - Firebird .Net Data Provider
标准 "User=SYSDBA; Password=masterkey; Database=SampleDatabase.fdb; DataSource=localhost; Port=3050; Dialect=3; Charset=NONE; Role=; Connection lifetime=15; Pooling=true; MinPoolSize=0; MaxPoolSize=50; Packet Size=8192; ServerType=0"
 
Excel
ODBC
标准 "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; Dbq=C:\MyExcel.xls; DefaultDir=c:\mypath; "
OLE DB
标准 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\MyExcel.xls; Extended Properties=""Excel 8.0; HDR=Yes; IMEX=1"""
"HDR=Yes; " indicates that the first row contains columnnames, not data
"IMEX=1; " tells the driver to always read "intermixed" data columns as text
TIP! SQL syntax: "SELECT * FROM [sheet1$]" - i.e. worksheet name followed by a "$" and wrapped in "[" "]" brackets.
 
Text
ODBC
标准 "Driver={Microsoft Text Driver (*.txt; *.csv)}; Dbq=c:\txtFilesFolder\; Extensions=asc,csv,tab,txt; "
OLE DB
标准 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\txtFilesFolder\; Extended Properties=""text; HDR=Yes; FMT=Delimited"""
"HDR=Yes; " indicates that the first row contains columnnames, not data
 
DBF / FoxPro
ODBC
标准 "Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277; Dbq=c:\mydbpath; "
OLE DB, OleDbConnection (.NET)
标准 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\folder; Extended Properties=dBASE IV; User ID=Admin; Password="
 
AS/400 (iSeries)
OLE DB, OleDbConnection (.NET)
IBM Client Access OLE DB provider "PROVIDER=IBMDA400; DATA SOURCE=MY_SYSTEM_NAME; USER ID=myUserName; PASSWORD=myPwd"
IBM Client Access OLE DB provider "PROVIDER=IBMDA400; DATA SOURCE=MY_SYSTEM_NAME; USER ID=myUserName; PASSWORD=myPwd; DEFAULT COLLECTION=MY_LIBRARY; "
ODBC
IBM Client Access ODBC driver "Driver={Client Access ODBC Driver (32-bit)}; System=my_system_name; Uid=myUserName; Pwd=myPwd"
 
Exchange
OLE DB
Exchange OLE DB provider "ExOLEDB.DataSource"
Specify store in the connection open command like this: conn.open "http://servername/mypublicstore"
 
Visual FoxPro
OLE DB, OleDbConnection (.NET)
Database container (.DBC) "Provider=vfpoledb.1; Data Source=C:\MyDbFolder\MyDbContainer.dbc; Collating Sequence=machine"
Free table directory "Provider=vfpoledb.1; Data Source=C:\MyDataDirectory\; Collating Sequence=general"
Force the provider to use an ODBC DSN "Provider=vfpoledb.1; DSN=MyDSN"
ODBC
Database container (.DBC) "Driver={Microsoft Visual FoxPro Driver}; SourceType=DBC; SourceDB=c:\myvfpdb.dbc; Exclusive=No; NULL=NO; Collate=Machine; BACKGROUNDFETCH=NO; DELETED=NO"
Free Table directory "Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; SourceDB=c:\myvfpdbfolder; Exclusive=No; Collate=Machine; NULL=NO; DELETED=NO; BACKGROUNDFETCH=NO"
 
Pervasive
ODBC
标准: "Driver={Pervasive ODBC Client Interface}; ServerName=srvname; dbq=@dbname"
OLD DB
标准: "Provider=PervasiveOLEDB; Data Source=C:\path"
 
UDL
UDL
UDL "File Name=c:\myDataLink.udl;"

http://www.cnblogs.com/lmjob/archive/2008/04/28/1174074.html

posted @ 2008-12-02 13:24 透明_人 阅读(184) | 评论 (0)编辑

posted @ 2008-12-02 13:22 透明_人 阅读(734) | 评论 (0)编辑

花了一些业余时间完成的,和大家一起分享 :)

http://download.csdn.net/source/370958

HTML格式,为了让其中的 Java 代码高亮显示需要开启JavaScript。

全文译自 Java Tutorial 的 Regular Expressions 一章,
本人英文很烂,不能保证译文的质量,还是建议大家直接看原文:
http://java.sun.com/docs/books/tutorial/essential/regex/index.html

本文是对Java中正则表达式的入门,主要介绍了:元字符、字符类、预定义字符类、量词、捕获组、边界匹配,
以及 java.util.regex 包中三个 public 类的用法等,后面还有几道课后练习题。

遗憾的是该教程对非捕获组只介绍了内嵌标志表达式简单的使用,对于 Pattern API 上其他的非捕获组构造
丝毫没有涉及。对于常用的选择结构(|),以及字符类中的转义等等也没有涉及。

该教程比较适合从未接触过正则表达式或者是对正则表达式还不很清楚的同学使用,为今后学习更高级的正则
表达式奠定基础。


PS:借此推荐几个关于正则表达式的网站:

http://regexlib.com
这个站点上有好多现成可用的正则表达式,比如:符合RFC规范的 E-mail 地址和 URL,以及日期等等,
有些是研究RFC的专家写的。
这个站点比较好,有很多东西可以直接拿来使用。

http://www.regular-expressions.info
这个站点也不错,上面有很多的例子和正则表达式教程。要了解关于更多的正则表达式可以到该站点上去学习。

http://www.regexlab.com/zh/
这个站点大家可能比较熟悉吧,上面有《揭开正则表达式的神秘面纱》一文,不过该站的资源比较少。
posted @ 2008-12-02 13:17 透明_人 阅读(127) | 评论 (0)编辑

2007年10月17日 #

iframe,尤其是不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,现在,让我来告诉大家一种iframe动态调整高度的方法,主要是以下JS函数:
程序代码
function SetWinHeight(obj)

   var win=obj; 
   if (document.getElementById) 
   { 
      if (win && !window.opera) 
      { 
         if (win.contentDocument && win.contentDocument.body.offsetHeight) 
               win.height = win.contentDocument.body.offsetHeight; 
      else if(win.Document && win.Document.body.scrollHeight) 
            win.height = win.Document.body.scrollHeight; 
        } 
    }
}
最后,加入iframe,不能丢掉onload属性,当然了,id也必须也函数中的win匹配
程序代码
<iframe width="778" align="center" height="200" id="win" name="win" onload="Javascript:SetWinHeight(this)" frameborder="0" scrolling="no"></iframe>

另一种情况的iframe解决方案(超简单)
重要提示:src=中你必须填写的网页地址,一定要和本页面在同一个站点上,否则,会抱错,说“拒绝访问!”(实际上这是因为Js的跨域问题导致拒绝访问的)
之前自己也碰到过这个问题,为了得到答案去网上搜索,发现有不少人也遇到了这样的问题,现在就把解决方法共享一下

1、建立一个bottom.js的文件,然后输入下面的代码(只有两行哦)
parent.document.all("框架ID名").style.height=document.body.scrollHeight;
parent.document.all("框架ID名").style.width=document.body.scrollWidth;
这里的 框架ID名 就是Iframe的ID,比如:
<IFRAME id="框架ID名" name="left" frameBorder=0 scrolling=no src="XXX.asp" width="100%"></IFRAME>

2、给你网站里所有的被包含文件里面每个都加入
<script language = "JavaScript" src = "bottom.js"/></script>
3、OK,收工!
在WINXP、IE6下面测试通过。很简单吧!

实现 iframe 的自适应高度
实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象。
程序代码
<script type="text/javascript">
//** iframe自动适应页面 **//

//输入你希望根据页面高度自动调整高度的iframe的名称的列表
//用逗号把每个iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。

//定义iframe的ID
var iframeids=["test"]

//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏
var iframehide="yes"

function dyniframesize()
{
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++)
{
if (document.getElementById)
{
//自动调整iframe高度
dyniframe[dyniframe.length] = document.getElementById(iframeids);
if (dyniframe && !window.opera)
{
dyniframe.style.display="block"
if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) //如果用户的浏览器是NetScape
dyniframe.height = dyniframe.contentDocument.body.offsetHeight;
else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) //如果用户的浏览器是IE
dyniframe.height = dyniframe.Document.body.scrollHeight;
}
}
//根据设定的参数来处理不支持iframe的浏览器的显示问题
if ((document.all || document.getElementById) && iframehide=="no")
{
var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}

if (window.addEventListener)
window.addEventListener("load", dyniframesize, false)
else if (window.attachEvent)
window.attachEvent("onload", dyniframesize)
else
window.onload=dyniframesize
</script>
posted @ 2007-10-17 22:07 透明_人 阅读(549) | 评论 (0)编辑

2006年4月3日 #

 

"^\d+$"  //非负整数(正整数 + 0)

"^[0-9]*[1-9][0-9]*$"  //正整数

"^((-\d+)|(0+))$"  //非正整数(负整数 + 0)

"^-[0-9]*[1-9][0-9]*$"  //负整数

"^-?\d+$"    //整数

"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)

"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数

"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0)

"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数

"^(-?\d+)(\.\d+)?$"  //浮点数

"^[A-Za-z]+$"  //由26个英文字母组成的字符串

"^[A-Z]+$"  //由26个英文字母的大写组成的字符串

"^[a-z]+$"  //由26个英文字母的小写组成的字符串

"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串

"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址

"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url

posted @ 2006-04-03 09:30 透明_人 阅读(70) | 评论 (1)编辑

2006年4月2日 #

posted @ 2006-04-02 12:27 透明_人 阅读(116) | 评论 (1)编辑

2006年3月29日 #

posted @ 2006-03-29 13:56 透明_人 阅读(73) | 评论 (0)编辑

2006年3月24日 #

posted @ 2006-03-24 21:45 透明_人 阅读(132) | 评论 (0)编辑