Witam,
Próbuję nauczyć się korzystać z IBatisa. Niestety nie mogę połączyć się ze swoją bazą danych i wyegzekwować na niej kwerend.
Używam następującej biblioteki IBatisa: ibatis-2.3.4.726.jar. Poniżej zamieszczam kod programu.
Plik XML klasy:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Employee">
<select id="getAll" resultClass="Employee">
SELECT * FROM NH.dbo.Employee
</select>
<update id="update" parameterClass="Employee">
UPDATE EMPLOYEE
SET FirstName = #FirstName#
WHERE ID = #ID#
</update>
</sqlMap>
Plik XML konfiguracyjny:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:sqlserver://localhost:1433;databaseName=NH"/>
<property name="JDBC.Username" value="Paweł-Komputer\Paweł"/>
<property name="JDBC.Password" value=""/>
</dataSource>
</transactionManager>
<sqlMap resource="Employee.xml"/>
</sqlMapConfig>
Kod klasy:
public class Employee {
private int ID;
private String FirstName;
private String LastName;
private int Salary;
public Employee(String firstName, String lastName, int salary)
{
FirstName = firstName;
LastName = lastName;
Salary = salary;
}
Employee() {
}
public int getID()
{
return ID;
}
public void setID(int id)
{
ID = id;
}
public String getFirstName()
{
return FirstName;
}
public void setFirstName(String firstName)
{
FirstName = firstName;
}
public String getLastName()
{
return LastName;
}
public void setLastName(String lastName)
{
LastName = lastName;
}
public int getSalary()
{
return Salary;
}
public void setSalary(int salary)
{
Salary = salary;
}
}
Metoda Main:
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
import com.microsoft.sqlserver.jdbc.*;
public class IBATISExample {
public static void main(String[] args) throws IOException,SQLException {
String path = "SqlMapConfig.xml";
Reader rd = Resources.getResourceAsReader(path);
System.out.println("Udało się znaleźć pliki");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
System.out.println("Going to update record.....");
Employee rec = new Employee();
rec.setID(1);
rec.setFirstName( "Roma");
System.out.println("Stworzono nowego Employee");
System.out.println("Record updated Successfully ");
System.out.println("Going to read records.....");
List <Employee> ems = (List<Employee>) smc.queryForList("Employee.getAll", null);
Employee em = null;
for (Employee e : ems) {
System.out.print(" " + e.getID());
System.out.print(" " + e.getFirstName());
System.out.print(" " + e.getLastName());
System.out.print(" " + e.getSalary());
em = e;
System.out.println("");
}
System.out.println("Records Read Successfully ");
}
}
Próba połączenia się z bazą danych generuje taki błąd:
gru 07, 2011 5:35:30 PM com.microsoft.sqlserver.jdbc.SQLServerConnection <init>
SEVERE: Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
Exception in thread "main" java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:238)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.ibatis.common.jdbc.SimpleDataSource.popConnection(SimpleDataSource.java:580)
at com.ibatis.common.jdbc.SimpleDataSource.getConnection(SimpleDataSource.java:222)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:567)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:94)
at IBATISExample.main(IBATISExample.java:25)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
Jeśli wiecie co może być przyczyną tego błędu, to bardzo proszę o pomoc, bo google mi nie pomogło :(