SqlConnection med variable i connection stringen [C#]

Permalänk

SqlConnection med variable i connection stringen [C#]

Hej. Försöker ansluta till en SQL server med variablar i connection strängen men får då error meddelandet "Instance failure". Om jag skriver ut variablen test i MessageBox.Show(test); så får jag ut instance namnet som det ska, så undrar därför varför funkar det då inte att använda test i connection strängen?

strängen ser ur såhär:

string connectionSrting = "Data Source='" + test + "'; Initial Catalog=Account; User ID=sa; Password=Windows; Integrated Security=TRUE";

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Data.SqlClient; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ShowDialog(); } private void button2_Click(object sender, EventArgs e) { XmlDocument xDoc = new XmlDocument(); xDoc.Load("C:\\Users\\Max\\Desktop\\config.xml"); string test = xDoc.SelectSingleNode("Config/InstanceName").InnerText; MessageBox.Show(test); string connectionSrting = "Data Source='" + test + "'; Initial Catalog=Account; User ID=sa; Password=Windows; Integrated Security=TRUE"; SqlConnection myConnection = new SqlConnection(connectionSrting); myConnection.Open(); MessageBox.Show("Connected!"); myConnection.Close(); } } }

Visa signatur

Intel Core i7 3770k 3.5 GHz | Gigabyte GTX 670 2GB OC | MSI Z77A GD65-ATX | Corsair 8GB 1600MHz VENGEANCE | Corsair HX 650W 80+ Bronze | Corsair Obsidian 800D |

Permalänk
Medlem

Jag skulle gjort något liknande detta istället.

using System; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace Test_SQLConnection { class Program { static void Main(string[] args) { // Läser ifrån App.config var connectionStringSettings = ConfigurationManager.ConnectionStrings["MyConnectionString"]; // Ändrar Data Source var scsb = new SqlConnectionStringBuilder(connectionStringSettings.ConnectionString); scsb.DataSource = "MyNewDataSource"; // Försöker ansluta using (var sqlConnection = new SqlConnection(scsb.ConnectionString)) { sqlConnection.Open(); // Visar anslutningens status Console.WriteLine(String.Format("Sql Connection State: {0}", sqlConnection.State)); // Stänger (i fall anslutningen är öppen) if (sqlConnection.State == ConnectionState.Open) sqlConnection.Close(); } } } }

Uppdaterade exemplet med Madsouls rekommendation
Permalänk
Medlem

Använd även using när du initierar en connection

Visa signatur

Utvecklare (Technical Director) / Delägare - Björnmamman

Permalänk
Medlem
Skrivet av Intel1155:

Hej. Försöker ansluta till en SQL server med variablar i connection strängen men får då error meddelandet "Instance failure". Om jag skriver ut variablen test i MessageBox.Show(test); så får jag ut instance namnet som det ska, så undrar därför varför funkar det då inte att använda test i connection strängen?

strängen ser ur såhär:

string connectionSrting = "Data Source='" + test + "'; Initial Catalog=Account; User ID=sa; Password=Windows; Integrated Security=TRUE";

Data Source skall nog inte omgärdas av '. Testa med

string connectionSrting = "Data Source=" + test + "; Initial Catalog=Account; User ID=sa; Password=Windows; Integrated Security=TRUE";

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

Vill tipsa dig om denna lilla siten http://www.connectionstrings.com/

Är totalt guld värd när du vill bygga ihop en connection string till oavsätt plaform.

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.