Connecting to a database server - c#

There is a database server at IP address 192.168.1.11. There are several databases on that server. It has authentication, like user : System and pass : 123123 .
Now I want to connect to this server only, not any particular database, and then get a list of databases available on that server.
I know the normal procedure of connecting to a database with SqlConnection. But I'm wondering how I could just get connected to the server and get the list of the databases on that server.
I am using Visual Studio 2010 and SQL Server 2008-

run this query on a Method
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4
or by
String connString ="Data Source=localhost;User ID=username;Password=passwrd;";
using (SqlConnection sqlConn = new SqlConnection(connString))
{
sqlConn.Open();
DataTable tblDatabases = sqlConn.GetSchema("Databases");
sqlConn.Close();
DataTable td = tblDatabases.Select("dbid>6").CopyToDataTable();
}

Related

Oracle connection with port, service name, and database from C# (ORA-12514

I'm new to Oracle. Trying to connect C# windows app to an Oracle database but can't seem to establish a proper connection. Keep getting exception: "ORA-12514: TNS:listener does not currently know of service requested in connect descriptor". I have to specify the port, service name, and database name in the connection string because the service id has access to multiple databases. I know that the values in the string are valid (valid server, valid serviceid, valid username, password, etc) because I have a third-party tool that is able to connect using the same parameters from a wizard. I've tried a lot of different ways to format the connection string but I always get the same 12514 error. In the code example, you'll see three formats (cxn, cxn2, and cxn3), I've tried each of them but get the same error.
string cxn = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyServerName)(PORT=MyPortNumber))" +
"(CONNECT_DATA=(SERVICE_NAME=MyServiceId)));User Id=MyUserName; Password=MyPassword;";
string cxn2 = "DATA SOURCE=MyServerName:MyPortNumber/MyUserName;" +
"PERSIST SECURITY INFO=True;USER ID=MyUserName; password=MyPassword; Pooling = False;";
string cxn3 = "DATA SOURCE=MyServerName:MyPortNumber/MyServiceId;" +
"PERSIST SECURITY INFO=True;USER ID=MyUserName; password=MyPassword; Pooling = False;";
using (OracleConnection conn = new OracleConnection(cxn3))
{
string sqlSelect = "SELECT * FROM PERSONS";
using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
{
var table = new DataTable();
da.Fill(table);
if (table.Rows.Count > 1)
Console.WriteLine("Successfully read oracle.");
}
}
Again, I've used MyServiceId in the third-party tool's wizard and I connect just fine and select my database. I'm using Oracle.ManagedDataAccess.Client. I consulted a number of articles online including Oracle's guidance in section "Getting Started with ODP.NET, Managed Driver". How can I get the driver to recognize the valid service id and then also accept the database name? Any guidance is appreciated. Thanks.
Well I wish I had a more definitive explanation but as it turns out the code from my original question works NOW using the connection string defined in variable "cxn". I ran it many times before with no success, so my only guess is that the DBA changed something or rebooted the server since initial configuration.

Why I cannot connect to remote SQL server via C# application?

I am new to C# and I am using windows forms.
I have 2 computers connected together via Ethernet cross cable (no domain used) and they communicate successfully. PC1 has windows 7 and it hosts SQL server (192.168.10.1), PC2 has C# application which connects to SQL server, the C# application as following:
namespace Remote_DB_Connection
{
public partial class Form1 : Form
{
SqlConnection MyConnection = new SqlConnection(#"Data Source=192.168.10.1\COFFEESHOP-PC,1433;Initial Catalog=mydb1;Trusted_Connection=True");
SqlCommand MyCommand = new SqlCommand();
DataTable DataTable = new DataTable();
SqlDataAdapter Sql_Data_Adapter = new SqlDataAdapter();
public Form1()
{
InitializeComponent();
MyConnection.Open();
MyCommand.CommandText = "SELECT * FROM Table1";
MyCommand.Connection = MyConnection;
Sql_Data_Adapter.SelectCommand = MyCommand;
Sql_Data_Adapter.Fill(DataTable);
button1.Text = Convert.ToString(DataTable.Rows[0]["Type"]);
button2.Text = Convert.ToString(DataTable.Rows[1]["Type"]);
button3.Text = Convert.ToString(DataTable.Rows[2]["Type"]);
MyCommand.Parameters.Clear();
Sql_Data_Adapter.Dispose();
MyConnection.Close();
}
}
}
now, when I run the application it throws this error : "The login is from an untrusted domain and cannot be used with Windows authentication" . in the sql server I login using windows authentication.
I had a look here and here they said I should create a username and password in sql server to remotely connect to sql server.
My question is: do I really have to create username and password in sql server to fix this error and connect to sql? I mean is there other ways to fix the issue?
Please help me, thank you
My question is: do I really have to create username and password in
sql server to fix this error and connect to sql?
Yes, because your machines are not part of a Windows Domain and Windows trusted authentication (Trusted_Connection=True) is not possible between them. If the machines are not part of a Windows Domain, SQL Server has no way of knowing who the client is unless it provides a username and a password in the connection string.

Trouble querying SQL Server database via C#

I have created a web form using a custom login control to access a local SQL Server database. The database contains a table named Employees with various info about the employee, however, the relevant columns for my question are EmployeeID (primary key), Username, and Password.
I am trying to query the database using the username and password entered in the login control to retrieve the EmployeeID. An exception is thrown when trying ExecuteScalar(). The exception states that 'Employees' is an invalid object name, so I suspect my problem is the connection string. I retrieved the connection string by viewing the properties of the database in SQL Server 2014 Management Studio, which is where I also created the db. Another guess is that authentication when connecting to the db. I'm not really sure though, so can someone help please?
string connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Joshua\\AppData\\Local\\Microsoft\\VisualStudio\\SSDT\\SignProDatabase\\SignProDatabase.mdf;Integrated Security=True;Connect Timeout=30";
string query = "select EmployeeID from Employees where Username = 'user' and Password = 'pass'";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(query, connection);
try
{
object test = cmd.ExecuteScalar();
Console.WriteLine(test.ToString());
}
catch(Exception err)
{
Console.WriteLine("Exception Message: " + err);
Console.ReadLine();
}
As Martin mentioned in the comments, the account that is running the application will need access to the server and database, as well as select permission on the Employees table. Also, if the code provided is not just for example then for security reasons you shouldn't be storing the actual passwords in your database and you will want to validate the input to protect against SQL injection attacks.

Error connecting to SQL server through string, not recognising user name or password

the problem I am having is connecting to an account on my sql server (2005) from an ASP.NET application.
Ive tried using the default sa login and users ive created already also the setting of the sql management studio are set to mixed properties, I have the string connection in the webconfig as well but also doesnt work.
c# code
//string conStr = ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString;
string conStr = #"server=JAMES-PC\SQLEXPRESS; database=projectDB; uid=james; password=password;";
string query = "SELECT [TaskID], [Task], [Start Date] AS Start_Date, [End Date] AS End_Date, [Priority], [Time Allowance] AS Time_Allowance, [Details], [Catagory] FROM [schedulerData0]";
SqlDataAdapter dataAdapt = new SqlDataAdapter(query, conStr);
DataTable table = new DataTable();
dataAdapt.Fill(table);
GridView1.DataSource = table;
GridView1.DataBind();
The error message I receive is:
Login failed for user 'james'. The user is not associated with a trusted SQL Server connection.
Any help appreciated
James
Your SQL SERVER configured for Windows Only connections and you current windows user not associated as trusted. Try to configure your SQL SEREVR to accept Mixed Mode connections.
Try this,I'm not sure but hope it will work-
<connectionStrings>
<add name ="conStr" connectionString ="Initial Catalog = projectDB;
Data Source =JAMES-PC\SQLEXPRESS; User Id=james;Password=password;"/>
</connectionStrings>
try mapping projectDB to user:james. open SQL Server Management Studio, select Security - Logins, double click user:james, select page:User Mapping, check projectDB.
Please try the following format If It is Sql Server user mode,
ConStr = "Server=JAMES-PC\SQLEXPRESS;Database=projectDB;User Id=james;
Password=password;"
if you are trying to connect using windows,
then you must provide Trusted Connection = true

Connection String in c#

I am trying to connect to a database with my connection string and recieve the following error when trying to connect to the database. For intergrated Security I user SSID so I don't have to enter a username and password. Also, the database resides on the same machine and was created inside VS2010. I can connect to the db without a problem using the SqlDataSource, but I am looking to start writing my own connection strings.
protected void btnUpdate_Click(object sender, EventArgs e)
{
string source = "server=(local)" + "integrated security=SSPI;" + "Connect Timeout=30; " + "database=Name";
SqlConnection conn = new SqlConnection(source);
conn.Open();
conn.Close();
}
The Error I get is this:
A network-related or instance-specific
error occurred while establishing a
connection to SQL Server. The server
was not found or was not accessible.
Verify that the instance name is
correct and that SQL Server is
configured to allow remote
connections. (provider: Named Pipes
Provider, error: 40 - Could not open a
connection to SQL Server)
Try the following syntax as connection string:
string source = "Data Source=Server Address;Initial Catalog=Database Name;Integrated Security=SSPI;";
Where Server Address should be localhost or .\SQLExpress
Hope thats correct. I have'nt installed a vs for testing
You are missing a ; after the server name.
Why are you concatenating all the parts of the connection string if they do not change? It makes it more difficult to read.
Try this:
string source = "server=(local);integrated security=SSPI;ConnectTimeout=30;database=Name";
You need a semicolon after (local)
string source = "server=(local);" + "integrated security=SSPI
I notice you tagged the question with asp.net
by default asp.net runs under a system account, when you are using integrated security then that account is trying to access your database, it probably doesn't have permission.
Take a look here for some information.
I would recommend you to use the SqlConnectionStringBuilder: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder(v=VS.100).aspx
That will probably make it easier.
To connect to SQL Server from C#.NET, you need to create a connection string such as below:
private SqlConnection connection;
private string connectionString =
#"Server=(local);Database=Embedding_SQL_Test;User ID=sa;Password=123";
connection = new SqlConnection( connectionString );
Next, you use the SqlConnection object created above to create a 'SqlCommand', as shown below:
SqlCommand cmd = new SqlCommand( "select * from Customer where CustomerID = #Cid",
connection);
The SQL query shown here can be replaced by a SELECT, INSERT, UPDATE queries etc.
Next to execute the SQL queries in the database, you use the following methods:
ExecuteReader - to execute SELECT queries
ExecuteNonQuery - to execute INSERT, DELETE, UPDATE, and SET statements.
This is a very short description of how to connect to SQL Server database from C# and execute SQL queries in the database.
For details about the connection string, the methods and their parameters check the following link: ( http://www.shahriarnk.com/Shahriar-N-K-Research-Embedding-SQL-in-C-Sharp-Java.html )
Here you will also find details about how to pass parameters to the SQL queries as well as calling stored procedures and much more.

Categories