⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysqldatasource.java

📁 SearchPathServer
💻 JAVA
字号:
/*
 * MM JDBC Drivers for MySQL
 *
 * Copyright (C) 1998 Mark Matthews <mmatthew@worldserver.com>
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 * 
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA  02111-1307, USA.
 *
 * See the COPYING file located in the top-level-directory of
 * the archive of this library for complete text of license.
 */

package com.mysql.jdbc.jdbc2.optional;

import java.io.*;
import java.sql.*;
import java.util.Properties;
import javax.naming.*;
import javax.sql.DataSource;

/**
 * A JNDI DataSource for a Mysql JDBC connection
 */

public class MysqlDataSource implements DataSource, Referenceable, Serializable
{
	/**
	 * The driver to create connections with
	 */

	protected static com.mysql.jdbc.Driver _MysqlDriver = null;

	static {
		try
		{
			_MysqlDriver =
				(com.mysql.jdbc.Driver) Class
					.forName("com.mysql.jdbc.Driver")
					.newInstance();
		}
		catch (Exception E)
		{
			throw new RuntimeException("Can not load Driver class com.mysql.jdbc.Driver");
		}
	}

	/** Should we construct the URL, or has it been set explicitly */

	protected boolean explicitUrl = false;

	protected String url = null;

	/**
	 * Hostname
	 */

	protected String _HostName = null;

	/**
	 * Port number
	 */

	protected int _port = 1306;

	/**
	 * Database Name
	 */

	protected String _DatabaseName = null;

	/**
	 * Character Encoding
	 */

	protected String _Encoding = null;

	/**
	 * User name
	 */

	protected String _User = null;

	/**
	 * Password
	 */

	protected String _Password = null;

	/**
	 * Log stream
	 */

	protected PrintWriter _LogWriter = null;

	/**
	 * Default no-arg constructor for Serialization
	 */

	public MysqlDataSource()
	{
	}

	/**
	 * Creates a new connection using the already configured
	 * username and password.
	 */

	public java.sql.Connection getConnection() throws SQLException
	{
		return getConnection(_User, _Password);
	}

	/**
	 * Creates a new connection with the given username and password
	 */

	public java.sql.Connection getConnection(String UserID, String Password)
		throws SQLException
	{
		Properties Props = new Properties();

		if (UserID == null)
		{
			UserID = "";
		}

		if (Password == null)
		{
			Password = "";
		}

		Props.put("user", UserID);
		Props.put("password", Password);
		Props.put("profileSql", getProfileSql());

		return getConnection(Props);
	}

	/**
	 * Creates a connection using the specified properties.
	 */

	protected java.sql.Connection getConnection(Properties Props)
		throws SQLException
	{
		String jdbcUrlToUse = null;

		if (!explicitUrl)
		{
			StringBuffer JDBCUrl = new StringBuffer("jdbc:mysql://");
			if (_HostName != null)
			{
				JDBCUrl.append(_HostName);
			}

			JDBCUrl.append(":");
			JDBCUrl.append(_port);
			JDBCUrl.append("/");

			if (_DatabaseName != null)
			{
				JDBCUrl.append(_DatabaseName);
			}

			jdbcUrlToUse = JDBCUrl.toString();
		}
		else
		{
			jdbcUrlToUse = this.url;
		}

		return _MysqlDriver.connect(jdbcUrlToUse, Props);
	}

	/**
	 * Gets the name of the database
	 */

	public String getDatabaseName()
	{
		return _DatabaseName;
	}

	public java.io.PrintWriter getLogWriter()
	{
		return _LogWriter;
	}

	public int getLoginTimeout() throws SQLException
	{
		return 0;
	}

	public int getPortNumber()
	{
		return getPort();
	}
	
	public int getPort()
	{
		return _port;
	}

	protected String _profileSql = "false";
	
	public String getProfileSql()
	{
		return _profileSql;
	}
	
	public void setProfileSql(String flag)
	{
		_profileSql = flag;
	}
	
	/**
	 * Required method to support this class as a <CODE>Referenceable</CODE>.
	 */

	public Reference getReference() throws NamingException
	{
		String FactoryName = "com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory";

		Reference Ref = new Reference(getClass().getName(), FactoryName, null);

		Ref.add(new StringRefAddr("user", getUser()));
		Ref.add(new StringRefAddr("password", _Password));
		Ref.add(new StringRefAddr("serverName", getServerName()));
		Ref.add(new StringRefAddr("port", "" + getPort()));
		Ref.add(new StringRefAddr("databaseName", getDatabaseName()));
		Ref.add(new StringRefAddr("profileSql", getProfileSql()));

		return Ref;
	}

	/**
	 * Gets the name of the database server
	 */

	public String getServerName()
	{
		return _HostName;
	}

	/**
	  * This method is used by the app server to set the url string specified  
	  * within the datasource deployment descriptor.  It is discovered using
	  * introspection and matches if property name in descriptor is "url".
	  *
	  * @param url url to be used within driver.connect
	  * @exception java.sql.SQLException
	  */

	public void setUrl(String url)
	{
		this.url = url;
		explicitUrl = true;
	}

	
	/**
	 * Gets the JDBC URL that will be used to create the
	 * database connection.
	 */

	public String getUrl()
	{
		if (!explicitUrl)
		{
			String Url = "jdbc:mysql://";

			Url = Url + getServerName() + ":" + getPort() + "/" + getDatabaseName();

			return Url;
		}
		else
		{
			return this.url;
		}
	}
	
	//
	// I've seen application servers use both formats
	// URL or url (doh)
	//
	
	public void setURL(String url)
	{
		setUrl(url);
	}
	
	public String getURL()
	{
		return getUrl();
	}
	

	/**
	 * Gets the configured user for this connection
	 */

	public String getUser()
	{
		return _User;
	}

	/**
	 * Sets the database name.
	 * @param nom the name of the database
	 */

	public void setDatabaseName(String DBName)
	{
		_DatabaseName = DBName;
	}

	/**
	 * Sets the log writer for this data source.
	 */

	public void setLogWriter(PrintWriter Output) throws SQLException
	{
		_LogWriter = Output;
	}

	public void setLoginTimeout(int seconds) throws SQLException
	{
	}

	/**
	 * Sets the password
	 */

	public void setPassword(String Pass)
	{
		_Password = Pass;
	}

	/**
	 * Sets the database port.
	 */

	public void setPort(int p)
	{
		_port = p;
	}
	
	public void setPortNumber(int p)
	{
		setPort(p);
	}

	/**
	 * Sets the server name.
	 */

	public void setServerName(String ServerName)
	{
		_HostName = ServerName;
	}

	/**
	 * Sets the user ID.
	 */

	public void setUser(String UserID)
	{
		_User = UserID;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -