Wie nehme ich einen Wert aus einer Datenbank? Muss die Skalarvariable "@id1" deklarieren
Frage
public partial class Form3 : Form
{
string var;
int ID1;
private void button1_Click(object sender, EventArgs e)
{
ID1 = int.Parse(textBox1.Text);
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);
cn.Open();
var = Convert.ToString(dataCommand.ExecuteScalar());
label3.Text = var;
}
}
Es gibt mir einen Fehler, der besagt, dass ich die Skalarvariable deklarieren muss @ID
, Ich suche überall und kann keine Lösung für meinen speziellen Fall bekommen.
Danke für die Hilfe Menschen! Ihre Lösungen funktionierten: D.
Lösung
public partial class Form3 : Form
{
string var;
int ID1;
private void button1_Click(object sender, EventArgs e)
{
ID1 = int.Parse(textBox1.Text);
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);
dataCommand.Parameters.AddWithValue("@ID1", ID1); // this is the new line of code
cn.Open();
var = Convert.ToString(dataCommand.ExecuteScalar());
label3.Text = var;
}
}
Siehe oben, ich habe hinzugefügt dataCommand.Parameters.AddWithValue("@ID1", ID1);
. Dies definiert Ihren Parameter für Ihre SQL -Abfrage und übergibt ihn den Wert. Ich nahm an, dass Sie die Variable wollen würden ID1
Um der Wert Ihres SQL -Parameters zu sein @ID1
.
Andere Tipps
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx
SqlCommand
hat ein Parameters
Sammlung.
siehe auch: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx
zitieren:
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
// Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml);
try
{
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Sie müssen den Wert des Parameters weitergeben. Fügen Sie diese Zeile direkt nach der Initialisierung der DataCommand -Variablen hinzu:
dataCommand.Parameters.Add("@ID", ID1);
Sie müssen dem DataCommand einen Parameter hinzufügen, weil Sie sagten, es gibt einen.
Id = @id1
teilt dem Server an, die Daten aus dem Parameter @id1 zu pucken. Dann deklarierst du keinen Parameter.
Überprüfen Sie die Parametersammlung im DataCommand -Objekt. Fügen Sie einen Parameter hinzu.
Sie müssen den Parameter zum Parameter hinzufügen SqlCommand.Parameters
Sammlung, weil Sie haben @ID1
Innerhalb Ihrer Anfrage.
Mach das vorher ExecuteScalar
dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1));
komplette Lösung
public partial class Form3 : Form
{
string var;
int ID1;
private void button1_Click(object sender, EventArgs e)
{
ID1 = int.Parse(textBox1.Text);
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);
dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1));
cn.Open();
var = Convert.ToString(dataCommand.ExecuteScalar());
label3.Text = var;
}
}
hoffe das hilft