Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / June 2006

Tip: Looking for answers? Try searching our database.

Repost: java.sql.SQLException with jdbc:odbc bridge driver and api

Thread view: 
Kermit Piper - 12 Jun 2006 22:13 GMT
Hello,

I've seen a lot of information on this error: java.sql.SQLException:
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified.

However, the only definitive solution I can find is going to Control
Panel-->Administrative Tools-->Data Sources(OBDC)-->System DSN-->etc. I

did this and the connection tests fine. So, this is not the cause of
the error in this case. So, given what I have explained and the snippet

below, can someone please offer some help in resolving this. I am
running in the following environment: Windows XP Pro, SQL Server 2000,
JBoss 4.0.2, JDK 150_07.

1. created my database
2. created a system DSN
3. did the required modifications in it
4. added the rt.jar to the web-inf\lib dir and did another build, then
restarted JBoss.

//  JDBC:ODBC bridge using api and using table:

This method is used in my LoginServlet:
public String validateUser(String inputUserid, String inputPwd) throws
SQLException
{
       String returnString = null;
       String dbUserid = "testuser";
       String dbPassword = "password" ;
       try
       {
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       }
       catch (ClassNotFoundException cnfe)
       {
               System.out.println(cnfe);
       }
       try
       {
               Connection con =
DriverManager.getConnection("jdbc:odbc:LocalServer",
dbUserid ,dbPassword);
               Statement stmt = con.createStatement();
               String sql = "select USERID from USERTABLE where USERID

= '" +
inputUserid + "' and PASSWORD = '" + inputPwd +"' ;" ;
               ResultSet rs = stmt.executeQuery(sql);
               if (rs.next())
               {
                 returnString = rs.getString("USERID");
               }
               stmt.close();
               con.close();
       }
       catch (SQLException sqle)
       {
               System.out.println(sqle);
       }
       return returnString ;
}

Any help would be greatly appreciated.
Thanks,
KP
Chris Uppal - 13 Jun 2006 09:47 GMT
> //  JDBC:ODBC bridge using api and using table:

You might have better luck using a real JDBC driver (not the flaky ODBC
bridge).  I believe that MS have their own driver, and there is jIDS too (I
have never used either of them myself, but people have written good things
about jTDS here).

Oh, by the way, unless this was just demo code to illustrate the problem, you
have a Very Nasty potential security hole here:

>  String sql = "select USERID from USERTABLE where USERID
>     = '" + inputUserid + "' and PASSWORD = '" + inputPwd +"' ;" ;

Never, ever, ever, build SQL strings from user-supplied input.  Use prepared
statements.

   -- chris


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.