Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

ODBC Connect to DSN with Username and Password

Posted on 2007-11-19
12
Medium Priority
?
8,100 Views
Last Modified: 2008-10-07
Connecting to a SQL database using ODBC in C++.  The SQLConnect(), function takes DSN name, username, and password strings as its params.  I have created a system DSN with a username and password already configured.  How do I tell SQLConnect that I wish to use the default authentication information in the DSN?  I've tried calling SQLConnect with nulls for the username and password, but that doesn't work.  Specifying the user name and password manually does work, but I do not want to hard code it or have to prompt the user for it.
0
Comment
Question by:cuziyq
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
12 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 336 total points
ID: 20313868
If the user name and password are already configured in the datasource, just pass NULL for these parameters.
0
 
LVL 39

Assisted Solution

by:itsmeandnobodyelse
itsmeandnobodyelse earned 332 total points
ID: 20313945
AFAIK, there is no way to use SQLConnect with no valid user authentification. But you can try passing "DEFAULT" both to user and password.

If that doesn't work (the docs say that user and password were passed to the ODBC driver, so the behavior is driver specific), you can try to make a SQLDriverConnect passing "DSN=datasource" as connect string. If it prompts for user and password you may try "DSN=datasource;UID=DEFAULT;PWD=DEFAULT". If that doesn't work either, the only chance I know is to use 'Windows authorization' in the SQL database, i. e. each user can login with his/her Windows user and password. If so, the connect string would be "DSN=datasource;Trusted_Connection=yes".

Regards, Alex

0
 
LVL 14

Author Comment

by:cuziyq
ID: 20314205
jkr, I tried passing in NULLs for the user name and password, and all I got was a driver manager error:
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user (null). Reason: Not associated with a trusted SQL Server connection.

Alex, it's the same story with "DEFAULT".

I find it very hard to believe that the ODBC data source administrator allows you to create a DSN for SQL Server that contains fields for user name and password (among many other things), test it, and yet not provide a mechannism by which you can actually use that user name and password.  Microsoft's documentation doesn't mention it one iota as far as I can see.  Very strange indeed.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 39

Expert Comment

by:itsmeandnobodyelse
ID: 20314397
>>>> that the ODBC data source administrator allows you to create a
>>>> DSN for SQL Server that contains fields for user name and password
>>>> (among many other things), test it, and yet not provide a mechannism
>>>> by which you can actually use that user name and password.
The ODBC interface was first. The DSN information was in ODBC.INI and ODBCINST.INI. Data source administrator comes much later and was used for other purposes than supporting 'native ODBC' interface, e. g. DAO, ADO (OLE DB), JDBC, EXCEL. The native ODBC drivers would have to handle default behavior but there is no way to get credentials (user, password) as plain text from registry. Instead, programs or drivers which can handle the default credentials in the registry have an additional interface to connect to database where they could/would pass the internal credential structures. That is MS specific and hardly can be part of an open standard like ODBC.

Regards, Alex
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
ID: 20314443
I used to solve the problem by either using 'trusted_connection'  (what is a must for ODBC on DB2), or by using a login prompt, or by encrypting user and password with a valid encryption method and store them in a config file. That maybe uncomfortable but if you could read users or passwords from registry would be worse.

 
0
 
LVL 11

Assisted Solution

by:Deepu Abraham
Deepu Abraham earned 332 total points
ID: 20315748
Hi There,

Here is the sample.It requires a data source name and accepts an optional user ID and password. It works well for applications that hard-code a data source name and do not require a user ID or password

http://msdn2.microsoft.com/en-us/library//ms714163.aspx

Hope this helps.

Best Regards,
DeepuAbrahamK
0
 
LVL 14

Author Comment

by:cuziyq
ID: 20412066
None of the suggestions work.  I have a suspicion that the only reason for having a username and password in the DSN configuration is so that the Test... button can log on to it.  I have written the software to have a config section that is user-configurable.
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
ID: 20412883
I object against deleting the question.

The answers didn't find a solution for that the asker expected and wanted, but none of the comments was wrong. The thread may be worthful if there is a similar question in the future. And, the author found a workaround which also was based on suggestions made here in that thread.

Regards, Alex  
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
ID: 20442468
>>>> Could you recommend one or more comments as the answer?
Hmmm. Valuations are a bad job (and I deeply admire you when you have to do so). As said, none of the answers given is really wrong, so you may equally distribute between the experts or the answers. I could tell more but as I participated with the most comments, I hardly could be regarded to be objective.
0
 
LVL 1

Expert Comment

by:modus_operandi
ID: 20479019
Split amongst participating Experts.

modus_operandi
EE Moderator
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
In this article we will learn how to fix  “Cannot install SQL Server 2014 Service Pack 2: Unable to install windows installer msi file” error ?
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question