hej jag får följande felr när jag kör denna kod: Prova såhär: första problemet löst...följd fråga....varför fungerar inte min insert metod....får inga felmeddelanden import java.sql.*; Hejsan, Fipplade lite och kom fram till att det fungerar om du lägger till en kolumn som är räknare i tabellen jag har en kolums i skötare som är räknare....det är primärnyckeln för tabellen. funkar endå inte... efter 2 dagars letande...har jag äntlingen hittat felet...man måste tydligen stänga den instansen som man har öppen för connection för att datat skall skrivas till databasen...access databs
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:532)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at DatabasTest.startConnection(DatabasTest.java:22)
at DatabasTest.main(DatabasTest.java:6)
import java.sql.*;
public class DatabasTest{
public static void main(String[] args)throws Exception{
DatabasTest d = new DatabasTest();
d.startConnection();
}
Connection conn;
public DatabasTest(){
}
public void startConnection(){
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
conn = DriverManager.getConnection("djurAnsvar.mdb");
}
catch(ClassNotFoundException cnfe){
cnfe.printStackTrace();
}
catch (SQLException cnfe){
cnfe.printStackTrace();
}
}Sv: access databs
String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String dbUrl="jdbc:odbc:djurAnsvar";
Class.forName(driverName);
conn = DriverManager.getConnection(dbUrl,"username","password");
Sv: access databs
den händer bara ingenting
public void insert(){
try{
Statement stmt = conn.createStatement();
String temp = "INSERT INTO Djurslag (Benamning) VALUES ('Lejon');";
stmt.executeUpdate(temp);
stmt.close();
}
catch(Exception e){
e.printStackTrace(System.err);
}
}Sv: access databs
public class DatabasTest{
public static void main(String[] args)throws Exception{
DatabasTest d = new DatabasTest();
d.startConnection();
d.select();
d.insert();
}
Connection conn;
public void startConnection(){
try{
String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String dbUrl="jdbc:odbc:djur";
Class.forName(driverName);
conn = DriverManager.getConnection(dbUrl);
}
catch(ClassNotFoundException cnfe){
cnfe.printStackTrace();
}
catch (SQLException cnfe){
cnfe.printStackTrace();
}
}
public void select() throws Exception{
Statement stmt = conn.createStatement();
String quary = "SELECT * FROM Djurslag;";
ResultSet rs = stmt.executeQuery(quary);
while(rs.next()){
String temp = rs.getString("Benamning");
System.out.println(temp);
}
}
public void insert(){
try{
Statement stmt = conn.createStatement();
String temp = "INSERT INTO Skötare (Namn) VALUES ('Poyan');";
stmt.executeUpdate(temp);
stmt.close();
}
catch(Exception e){
e.printStackTrace(System.err);
}
}
}Sv: access databs
Prova att anropa commit() på Connection-objektet. Enligt dokumentationen [1] så ska ett Connection-objekt vara i "auto-commit mode" som standard, men jag lyckas inte utläsa från dokumentationen vilka villkor som måste uppfyllas för att detta ska vara sant. Men så är inte Java det som jag normalt använder heller.
[1] http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Connection.htmlSv: access databs
Skötare.
Då fungerade det att lägga in Poyan.
//SkySv: access databs
Sv: access databs
conn.close();
när man inte kört conn.close(): och skriver ut värdet som returneras från executeUpdate(); får jag 1. vilket betyder att den har ändrat i en rad i databasen. fast det inte har gjort det.
men när jag kör conn.close(); så skriver den ut 1 pluss att den skriver till databasen. precis som det skall vara.
det första fallet måste vara nån bugg i java.....nån får gärna testa det och verifera mina uppgifter.
problem e i allafall löst.
// Poyan