问题描述
|
好吧,这真是令人生气。 。 。我可以连接到另一个城市的服务器上的oracle数据库,但是不能连接到我自己的计算机上的oracle数据库吗?我想念什么?下面是我的代码。 。 。我什至尝试使用两个端口1521(我的Tomcat服务器使用8080)。
try
{
Connection conn;
// Load the JDBC driver
String driverName = \"oracle.jdbc.driver.OracleDriver\";
Class.forName(driverName);
// Create a connection to the database
String url = \"jdbc:oracle:thin:@localhost\";
conn = DriverManager.getConnection(url,\"root\",\"password\");
}
catch (IOException e)
{
System.out.println(\"Caught I/O Exception);
e.printstacktrace();
throw e;
}
catch (sqlException e)
{
System.out.println(\"Caught sql Exception);
e.printstacktrace();
throw e;
}
}
解决方法
您输入的网址不正确。尝试这个:
String url = \"jdbc:oracle:thin:@host:1521:database\";
您必须使用正确的用户名和密码,并替换适用于您的案例的主机和数据库的值。不要只逐字使用该字符串。
Oracle在运行吗?您可以使用SQL * Plus进行连接吗?如果SQL * Plus无法连接,则Java也将无法连接。
与JDK和数据库版本匹配的JDBC驱动程序JAR必须位于CLASSPATH中。您应该可以在下载的发行版中找到驱动程序JAR。
不要使用任何CLASSPATH环境变量进行设置;使用java -cp
命令行参数。
修改此代码以进行尝试。我知道这行得通。
package persistence;
import java.sql.*;
import java.util.*;
/**
* util.DatabaseUtils
* User: Michael
* Date: Aug 17,2010
* Time: 7:58:02 PM
*/
public class DatabaseUtils
{
private static final String DEFAULT_DRIVER = \"oracle.jdbc.driver.OracleDriver\";
private static final String DEFAULT_URL = \"jdbc:oracle:thin:@host:1521:database\";
private static final String DEFAULT_USERNAME = \"username\";
private static final String DEFAULT_PASSWORD = \"password\";
/*
private static final String DEFAULT_DRIVER = \"org.postgresql.Driver\";
private static final String DEFAULT_URL = \"jdbc:postgresql://localhost:5432/party\";
private static final String DEFAULT_USERNAME = \"pgsuper\";
private static final String DEFAULT_PASSWORD = \"pgsuper\";
*/
/*
private static final String DEFAULT_DRIVER = \"com.mysql.jdbc.Driver\";
private static final String DEFAULT_URL = \"jdbc:mysql://localhost:3306/party\";
private static final String DEFAULT_USERNAME = \"party\";
private static final String DEFAULT_PASSWORD = \"party\";
*/
public static void main(String[] args)
{
long begTime = System.currentTimeMillis();
String driver = ((args.length > 0) ? args[0] : DEFAULT_DRIVER);
String url = ((args.length > 1) ? args[1] : DEFAULT_URL);
String username = ((args.length > 2) ? args[2] : DEFAULT_USERNAME);
String password = ((args.length > 3) ? args[3] : DEFAULT_PASSWORD);
Connection connection = null;
try
{
connection = createConnection(driver,url,username,password);
DatabaseMetaData meta = connection.getMetaData();
System.out.println(meta.getDatabaseProductName());
System.out.println(meta.getDatabaseProductVersion());
String sqlQuery = \"SELECT PERSON_ID,FIRST_NAME,LAST_NAME FROM PERSON ORDER BY LAST_NAME\";
System.out.println(\"before insert: \" + query(connection,sqlQuery,Collections.EMPTY_LIST));
connection.setAutoCommit(false);
String sqlUpdate = \"INSERT INTO PERSON(FIRST_NAME,LAST_NAME) VALUES(?,?)\";
List parameters = Arrays.asList( \"Foo\",\"Bar\" );
int numRowsUpdated = update(connection,sqlUpdate,parameters);
connection.commit();
System.out.println(\"# rows inserted: \" + numRowsUpdated);
System.out.println(\"after insert: \" + query(connection,Collections.EMPTY_LIST));
}
catch (Exception e)
{
rollback(connection);
e.printStackTrace();
}
finally
{
close(connection);
long endTime = System.currentTimeMillis();
System.out.println(\"wall time: \" + (endTime - begTime) + \" ms\");
}
}
public static Connection createConnection(String driver,String url,String username,String password) throws ClassNotFoundException,SQLException
{
Class.forName(driver);
if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0))
{
return DriverManager.getConnection(url);
}
else
{
return DriverManager.getConnection(url,password);
}
}
public static void close(Connection connection)
{
try
{
if (connection != null)
{
connection.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void close(Statement st)
{
try
{
if (st != null)
{
st.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void close(ResultSet rs)
{
try
{
if (rs != null)
{
rs.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void rollback(Connection connection)
{
try
{
if (connection != null)
{
connection.rollback();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static List<Map<String,Object>> map(ResultSet rs) throws SQLException
{
List<Map<String,Object>> results = new ArrayList<Map<String,Object>>();
try
{
if (rs != null)
{
ResultSetMetaData meta = rs.getMetaData();
int numColumns = meta.getColumnCount();
while (rs.next())
{
Map<String,Object> row = new HashMap<String,Object>();
for (int i = 1; i <= numColumns; ++i)
{
String name = meta.getColumnName(i);
Object value = rs.getObject(i);
row.put(name,value);
}
results.add(row);
}
}
}
finally
{
close(rs);
}
return results;
}
public static List<Map<String,Object>> query(Connection connection,String sql,List<Object> parameters) throws SQLException
{
List<Map<String,Object>> results = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
ps = connection.prepareStatement(sql);
int i = 0;
for (Object parameter : parameters)
{
ps.setObject(++i,parameter);
}
rs = ps.executeQuery();
results = map(rs);
}
finally
{
close(rs);
close(ps);
}
return results;
}
public static int update(Connection connection,List<Object> parameters) throws SQLException
{
int numRowsUpdated = 0;
PreparedStatement ps = null;
try
{
ps = connection.prepareStatement(sql);
int i = 0;
for (Object parameter : parameters)
{
ps.setObject(++i,parameter);
}
numRowsUpdated = ps.executeUpdate();
}
finally
{
close(ps);
}
return numRowsUpdated;
}
}