Я использую Oracle Express Edition для работы с проектом в JAVA/SQL. Код не содержит ошибок компиляции, но когда я пытаюсь запустить его, я получаю сообщение об ошибке, что говорит:Ошибка подключения к базе данных JDBC
Failed call.XE.SYS.DBMS_FEATURE_TEST_PROC_1
Вот мой код:
import java.sql.*;
import javax.sql.*;
public class StudentAverages {
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:driver_type:[username/password]@//host_name:port_number:SID");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("Select * from [Sheet1$]");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1)
System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue);
}
System.out.println("");
}
st.close();
con.close();
} catch (Exception ex) {
System.err.print("Exception: ");
System.err.println(ex.getMessage());
}
}
public void StudentMean(Connection con, Statement st, ResultSet rs) throws SQLException{
try{
Statement stOne, stTwo, stThree, stFour;
String SelectAverage = "SELECT MEAN FROM STUDENTS";
ResultSet rsOne = stOne.executeQuery(SelectAverage);
String TotalAverage = "SELECT Avg(MEAN) AS averages FROM STUDENTS";
ResultSet rsTwo = stTwo.executeQuery(TotalAverage);
String student_stan_dev = "SELECT STDEV(MEAN) AS standardDeviation FROM STUDENTS";
ResultSet rsThree = stThree.executeQuery(student_stan_dev);
int onesdMean = 1;
//Loop Duration_Sec column
while(rsOne.next()){
//Convert values into float values
allAvgs = rsOne.getFloat("MEAN");
totalAvg = rsTwo.getFloat("averages");
StDev = rsThree.getFloat("standardDeviation");
}
//Calculate one standard deviation away from mean
theSD = allAvgs - (onesdMean * StDev);
//Create a new column
String flaggedStudents = "ALTER TABLE STUDENTS ADD FlaggedStudents INT";
ResultSet rsFour = stFour.executeUpdate(flaggedStudents);
if(allAvgs >= theSD){
//Flag students who meet the criteria
String FlagHint = "INSERT INTO STUDENTS.FlaggedStudents VALUES('1')";
st.executeUpdate(FlagHint);
}
//Count the students who meet the criteria and add those students
//to a new table
String countInstances = "SELECT STUDENTS.NAME, STUDENTS.FlaggedStudents" +
"COUNT(*)OVER(PARTITION BY STUDENTS) AS cnt FROM STUDENTS";
st.executeQuery(countInstances);
st.executeUpdate("CREATE TABLE IF NOT EXISTS StudentCount" +
"(NAME INT , cnt INT)");
String insertVals = String.format("INSERT INTO StudentCount" +
"(NAME , cnt INT") +
" VALUES ('%s','%s')");
st.execute(insertVals);
}
catch(SQLException e){
e.printStackTrace();
}
}
В чем причина этой ошибки и как я могу запустить свой проект? Я использую тонкий драйвер. Любая помощь будет оценена по достоинству.
Stack Trace:
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at StudentAverages.main(StudentAverages.java:23)
exception :
java.sql.SQLException: No suitable driver found for jdbc:oracle:driver_type:[username/password]@//host_name:port_number:SID
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at StudentAverages.main(StudentAverages.java:31)
какая линия вызывает ошибку? пожалуйста, мы не сидим рядом с вами, глядя на ваш идеал ... –
Пожалуйста, разместите сообщения stacktrace, чтобы лучше понять проблему. Кроме того, это поможет узнать номер строки, где возникает ошибка. –
Может существовать множество мест, где может возникать «Исключение». Мое лучшее предположение было бы 'SQLException' для' FlagHint'. Вы должны предоставить 'columname' там. – Smit