2011-12-01 95 views
2
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; 

    } 
} 

它給了我一個錯誤說我必須聲明標量變量@ID,我到處搜尋,並不能得到我的特定情況下的解決方案。如何從數據庫中獲取值?必須聲明標量變量「@ ID1」

感謝您的幫助!你的解決方案工作:D

回答

4
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; 

} 

}

見上面,我已經加入dataCommand.Parameters.AddWithValue("@ID1", ID1);。所做的是爲您的SQL查詢定義您的參數並將其傳遞給它。我認爲你希望變量ID1是你的SQL參數@ID1的值。

1

你需要添加一個參數到DataCommand,因爲你說有一個參數。

ID = @ ID1

告訴服務器從參數@ ID1精靈的數據。然後你不要聲明一個參數。

檢查DataCommand對象上的Parameters集合。添加一個參數。

2

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx

SqlCommandParameters集合。

還看到:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

報價:

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); 
    } 
} 
0

您必須將參數添加到SqlCommand.Parameters集合,因爲你 有你的查詢中@ID1

做到這一點之前ExecuteScalar

dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1)); 

完整的解決方案

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; 
    } 
} 

希望這有助於

2

您需要在參數的值傳遞。添加此行之後,你初始化變量dataCommand:

dataCommand.Parameters.Add("@ID", ID1);