What is the format of a SQLConnection connection string? - c#

What is the format of a SqlConnection connection string that is passed in the constructor method? I have run a search engine search online and all I could find so far is examples like:
"Data Source=(local);Initial Catalog=AdventureWorks; Integrated Security=SSPI;"
"User Id=sa;Server=localhost;Initial Catalog=Test;"
The examples raises questions. Since the SQL Server Management Studio (SSMS) program offers a different set of fields during start up in order to connect to a database, I have to ask how does "Server type, "Server name", "Authentication", "User name" and "Password". Also, is "Catalog" another name for a database table?

You should be more specific about what your goal is. This will provide you with better answers.
Catalog is a different name for database, you're connecting to a SQL server and use catalog to specify the database which you want to access.
Server type is either SQL or Windows Authentication
If you're trying to generate a ConnectionString in a string format but don't know how to format the string. The best way is to use the SqlConnectionStringBuilder . After you've set all the variables in the builder use the toString() method to convert it to a string. That way you don't have to worry about how to format your connectionstring.
If you have the string already, or don't need to generate it on the fly you can put it in your web/app.config and use it directly.
A very basic connectionstring that uses SQL authentication looks like this:
"data source=[sqlserver];initial catalog=[database];user id=[username];password=[password];"

I always look at this website for connection string patterns and examples:
https://www.connectionstrings.com/sql-server/

Related

Azure mobile EasyTables connection string

I am fairly beginner in here, so any help would be much appreciated :)
So, I created a SQL Database and I want to connect EasyTables to it. Apparently the automatic option has been removed and I have to do it manually.
I followed "How can I add a connection string manually" page but it lead me to nothing.
Where should i create the connection string, and what to put in the value field?
Or if there is any tutorials out there for the new way please tell me :)
Thank you a lot
You said you have followed tutorial: How can I add a connection string manually.
The Easy Table connection should like this:
SQL Database Connection String format
Data Source=tcp:{your_SQLServer},{port};Initial Catalog={your_catalogue};User ID={your_username};Password={your_password}
{your_SQLServer} Name of the server, this can be found in the
overview page for your database and is usually in the form of
“server_name.database.windows.net”.
{port} usually 1433.
{your_catalogue} Name of the database.
{your_username} User name to access your database.
{your_password} Password to access your database.
Add the connection string to your Web App
In App Service, you can manage connection strings for your application by using the Configuration option in the menu.
To add a connection string:
Click on the Application settings tab.
Click on [+] New connection string.
You will need to provide Name, Value and Type for your connection
string.
If your are adding a connection string to a SQL Azure database choose
SQLAzure under type.
If your are adding a connection to an Azure Storage account, chose
Custom under type.
NOTE If you are adding a connection string because you are planning on using the Easy API or Easy Table features, then the connection strings used by this features expect the following specific names:
Azure SQL database: MS_TableConnectionString
Azure Storage account: MS_AzureStorageAccountConnectionString
For example, this is my connection string:
When you have configured this, go to Easy table, click Add to add the table name in your Azure SQL database.
You can find that esay table has connected to my Azure SQL database now and we can see the data in the table.
Update:
You should first add the connection string in the configuration followed the format provided for you.
Then go to Easy Table, configure Easy table API:
Choose the 2:
When it done, you can add table in your SQL database, please follow my steps in above.
Note:
Your connection string name must be: MS_TableConnectionString.
Hope this helps.

Build SqlCredential in C# Web Service

I'm creating a Web Service using C#. I've a SQL Database in a host, so I'm building a SqlConnection instance in order to be able to execute queries.
But to use SqlConnection you need a SqlCredential, which needs of SecureString in order to be initialized (or to assign a password anyway).
The problem is, that SecureString can be easily obtained from a password textbox, but it's not so easy when you want to build it without it (since it's a webservice, so it doesn't have any GUI).
The only available method I've found is SecureString.AppendChar(), so I would have to build the SecureString by using a loop over my original password string, in order to add its chars to it, which seems quite weird for me.
Does exist any other approach to do it?
Thanks in advance!
Most of the time, people will simply create a Sql Connection with the connection string set in the Web.config.
You can pass the connection string into the constructor of your SqlConnection, like so:
(in the Web.Config)
<connectionStrings>
<add name="nameOfConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
Then you'd access it like this:
var connectionString = Configuration.ConfigurationManager.ConnectionStrings["nameOfConnectionString"].ConnectionString;
var sqlConnection = new SqlConnection(connectionString);
For more information on the varying types of connections and formats, you can google the info, but SQL Server connection strings usually lists the layouts.

How do I construct a connectstring given all the parameters?

In C#, how do I manually build a proper connection string? I have the server name, database name, user name, and password. This is a SQL Server database and .NET 4.0.
I looked at the SQLConnectionStringBuilder and that appears to be what I want but I don't know how to specify the server.
On the SqlConnectionStringBuilder use the DataSource property for the server host name/ip address.
Have a look at the examples at MSDN:
MSDN - SqlConnectionStringBuilder Class
The line of code in question:
builder["Server"] = yourServerName;
Your looking for the DataSource Property
Although you could just set the ConnectionString to something like
Data Source =myServerAddress; Initial Catalog =myDataBase; User Id =myUsername; Password =myPassword;
For alternative connection string for SQL Server 2008 see
http://www.connectionstrings.com/sql-server-2008#p1
You're right : SqlConnectionStringBuilder is the way to go. The DataSource property is the server name. You can find more info about this class on the msdn library. One easy way to figure out what properties you have to set may be to initialize a SqlConnectionStringBuilder using an existing connection string and seeing which properties are used.
For instance, it's likely that you'll use IntialCatalog (the name of the database you want to connect to).
I suggest taking a look at connectionstrings.com.
You can use the SQLConnectionStringBuilder constructor overload that takes a connectionstring as described in the above site.

Is there a generic way of dealing with varying connection strings in C#?

I have an application that needs to connect to a SQL database, and execute a SQL Agent Job.
The connection string I am trying to access is stored in the registry, which is easily enough pulled out.
This appliction is to be run on multiple computers, and I cannot guarantee the format of this connection string being consistent across these computers. Two that I have pulled out for example are:
Data Source=Server1;Initial Catalog=DB1;Integrated Security=SSPI;
Data Source=Server2;Initial Catalog=DB1;Provider=SQLNCLI.1;Integrated Security=SSPI;Auto Translate=False;
I can use an object of type System.Data.SqlClient.SqlConnection to connect to the database with the first connection string, howevever, I get the following error when I pass the second to it:
keyword not supported: 'provider'
Similarly, I can use the an object of type System.Data.OleDb.OleDbConnection to connect to the database with the second connection string, howevever, I get the following error when I pass the first to it:
An OLEDB Provider was not specified in the ConnectionString'
I can solve this by scanning the string for 'Provider' and doing the connect conditionally, however I can't help but feel that there is a better way of doing this, and handle the connection strings in a more generic fashion.
Does anyone have any suggestions?
The normal way of handling this is storing the ADO.NET provider unique name (separately from the connection string) and using a DB Provider Factory.
Use a SqlConnectionStringBuilder, initialize it with the connection string you find in registry and then read its ConnectionString property, which would normalize the connection string to proper SQL Client syntax.

SQL Server 2005 SQL Authentication Connection String

I'm building an application that connects to SQL Server 2005. It currently uses Windows authentication, but I'd like to switch to SQL Authentication (I believe it is also sometimes called Mixed Authentication). My current connection string is:
"Data Source=LOCALHOST;Initial Catalog={0};Integrated Security=SSPI"
That's for Windows authentication, but for SQL, I am thinking:
"Data Source=LOCALHOST;Initial Catalog={0};user id={1};password={2}"
Is this the correct way? The code assumes that:
{0} is the name of the database
{1} is the username
{2} is the password
I'm switching to SQL authentication because I'm thinking of connecting to a SQL Server instance on a remote server - is SQL authentication the right way to do this, and would I just have to enter the IP where "LOCALHOST" is currently?
Thanks!
UPDATE: Thank you for all the great answers, guys! All of them were wonderful and very helpful, I can't even decide which one to award "accepted answer" to, but I have voted up all of them because they rock. Thanks again!
You go in the right way, but I think that looking at Connection Strings may be much more helpfull to you than any answer in here.
You can also use uid instead of "User Id" and pwd instead of "password":
"Data Source=LOCALHOST;Initial Catalog={0};uid={1};pwd={2}"
In place of LOCALHOST, you would either use the IP of the remote machine, or the DNS Name. Note that if multiple instances of SQL Server exist on the remote machine, you need to specify the instance under Data Source - e.g. "Data Source=11.22.33.44\SQLEXPRESS".
There is an app for that: SqlConnectionStringBuilder:
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LOCALHOST";
scsb.InitialCatalog = ...;
scsb.IntegratedSecurity = false;
scsb.UserID = ...;
scsb.Password = ...;
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LOCALHOST";
scsb.InitialCatalog = ...;
scsb.IntegratedSecurity = true;
You can then extract the connection string from the builder's ConnectionString property. This way is error proof and you can later modify other properties like ConnectTimeout or AsynchronousProcessing, and you won't have to remember the string syntax.
Yes this will work exactly as you said.
"Data Source=11.22.33.44;Initial Catalog={0};user id={1};password={2}"
If you do not have a common Active Directory domain between the local and remote server, then I think you will need the SQL authentication. However, if you do have a common ADS domain, then I recommend using it – otherwise you have to either use a common SQL account for everyone (and then use an appropriate mechanism to encrypt the password) or create separate SQL accounts for each user, thereby duplicating data.
Be very careful with that Initial Catalog setting. If that value can be supplied by user input, then it might be used to try to attack another database, if you don't have good validations in place to protect against it. Sorry if I'm preaching to the choir :-).

Categories

Resources