[ jocat @ 29.12.2005. 12:42 ] @
Koristim sledeći kod :

Code:

try {
                          Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
                          Connection conn = (Connection) DriverManager.getConnection(
                            "jdbc:jtds://sqlserver/table","username", "pass");
                          String query = "SELECT * FROM table";        
                          Statement stmt = conn.createStatement();                
                          ResultSet rset = stmt.executeQuery(query);        
                        // Citanje rezultata upita
                        while (rset.next()) {
                             System.out.println(rset.getString(1));
                          }
                      rset.close();
                      stmt.close();
                      conn.close();
                    }
                    catch(Exception e1){
                        System.out.println("Nisam bas uspeo da se konektujem!");
                    }


Red Class.forName prolazi,
dok u redu Connection puca, tj ne može da se konektuje kako treba ...
Kako se tačno navodi parametar u getConnection-u ? Kako saznati tačno šta ide posle jdbc:jtds:// ?

Hvala unapred na odgovorima ?
[ bgd2500 @ 29.12.2005. 15:35 ] @
Probaj ovako

Code:

...
String url = "jdbc:jtds:sqlserver://server:port/database;User=username;Password=password";
Connection conn = DriverManager.getConnection(url);
..

http://jtds.sourceforge.net/faq.html
[ _owl_ @ 29.12.2005. 16:09 ] @
Preporucuje se da se za konektovanje na bazu koristi DataSource objekat umesto ucitavanja drajvera preko classloader-a. U tvom primeru ne treba da koristis poziv metode newInstance().
Code:

import net.sourceforge.jtds.jdbcx.JtdsDataSource;
...
public class DBLink {
    Connection connection;
        ...
    private void makeConnection() throws DBException {
        try {
            JtdsDataSource ds=new JtdsDataSource(); 
            ds.setUser(dbc.getConfigKey("username"));
            ds.setPassword(dbc.getConfigKey("password"));
            ds.setServerName(dbc.getConfigKey("host"));
            ds.setDatabaseName(dbc.getConfigKey("database"));
            Connection connection=ds.getConnection();
            connection.setAutoCommit(false);
                        setConnection(connection);
          } catch (Exception e) {
              System.out.println(e);
            throw new DBException("Greska pri konektocvanju na bazu\r\n" + e);
        }
    }
    ...

[ jocat @ 20.06.2006. 12:14 ] @

Evo jednog veoma čudnog problema, što se dešava prilikom konektovanja preko jtds na SQL Server :

Do sad sam vršio samo isčitavanje podataka sa SQL Server-a, i sve je radilo OK. Sad kad se javila potreba da upišem nešto u bazu, javio se problem da se query izvrši, i prođe bez javljanja greške, a da se isti taj "INSERT" ne zapisuje u bazu. Ukoliko promenim user name ili pass, tad program redovno javlja odgovarajuću grešku,..

Pokušao sam da taj isti INSERT prekopiram u pustim u Analizer-u, i tako sve radi kako treba - tj upiše slog u bazu.

Unutar istog koda sa istom konekcijom, kad izvršim select upit, sve radi kako treba.

Da postoji neko ograničenje na upis u bazu, verovatno bi trebalo da bude ispisana greška ?

Isto tako, iz Analizer-a ne bi bio dozvoljen upis u tabelu ...


Hvala veliko na odgovorima unapred!
[ zoran.milakovic @ 02.07.2006. 09:48 ] @
Da li si izvrsio commit konekcije? Jer, ako ti je autoCommit=false, moras explicitno da ga pozoves, da bi ti promene u bazi bile trajne.
[ jocat @ 04.07.2006. 06:20 ] @
Da to je bio problem!

Uzgred da li je autoCommit nacin da se ne desi da se rezervisu isti kljucevi prilikom upisa u bazu ? Ustvari za sta je stvarno namenjeno autoCommit ?

Pozzdrav!