0

SQL クエリに問題があります。

SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source=.\\SQLExpress;" + "Trusted_Connection=True;" + "User Instance=True;" + "AttachDbFilename=|DataDirectory|\\fbi.mdf;";
        string sqlQuery4 = "SELECT Car FROM tbl1 JOIN tbl2 ON (tbl1.userID = tbl2.userID) WHERE tbl2.username='Bob'";
        SqlCommand cmd4 = new SqlCommand(sqlQuery4, conn);
        conn.Open();
        SqlDataReader rd = cmd4.ExecuteReader();
        rd.Read();
        ddl1.Items.Add(rd.GetValue(0).ToString());
        conn.Close();

したがって、Bob に属する tbl1 からすべての車が返されます。クエリは 1 つの文字列のみを返し、それをリストボックス "ddl1" に入れますが、少なくとも 3 つの文字列を返す必要があります。何か案は?

4

3 に答える 3

3

You need to loop through the reader:

while (rd.Read()){
   ddl1.Items.Add(rd.GetValue(0).ToString());
}
于 2012-11-23T19:16:16.940 に答える
0

ノバク、それが正しいので、あなたの問題がカートの解決策で何であったかわからない。完全なステートメントは次のようになります。

string connectionString= "Data Source=.\\SQLExpress;Trusted_Connection=True;User Instance=True;AttachDbFilename=|DataDirectory|\\fbi.mdf;";
string query = "SELECT Car FROM tbl1 JOIN tbl2 ON (tbl1.userID = tbl2.userID) WHERE tbl2.username='Bob'";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    using (SqlCommand command = new SqlCommand(query, connection))
    {
        connection.Open();
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                ddl1.Items.Add(reader.GetValue(0).ToString());
            }
        }
    }
}
于 2012-11-23T20:02:53.953 に答える
0

以下のコードを試してください:

SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source=.\\SQLExpress;" + "Trusted_Connection=True;" + "User Instance=True;" + "AttachDbFilename=|DataDirectory|\\fbi.mdf;";
        string sqlQuery4 = "SELECT Car FROM tbl1 JOIN tbl2 ON (tbl1.userID = tbl2.userID) WHERE tbl2.username='Bob'";
        SqlCommand cmd4 = new SqlCommand(sqlQuery4, conn);
        conn.Open();
        SqlDataReader rd = cmd4.ExecuteReader();


                ddl1.DataSource = rd;
                ddl1..DataTextField = "columnname"; //your column name
                ddl1.DataValueField = "columnname";
                ddl1.DataBind();

                rd.Close();
                conn.Close();
于 2012-11-23T20:15:35.070 に答える