0

アプリケーション— 1つのTextBlock、1つのボタン。+ SQLデータベース—1つのテーブル。ボタンをクリックすると、SQLからテキストブロックに読み込もうとしていますが、機能しません。

private void nextButton_Click(object sender, RoutedEventArgs e)
    {
        GetSqlData();
    }

    private void GetSqlData()
    {
        string connectionString = @"Data Source=Jama-Dharma\sqlexpress;Initial Catalog=Cars;Integrated Security=True";
        SqlConnection sqlConnection = new SqlConnection(connectionString);

        using (sqlConnection)
        {
            string sqlQuery = @"SELECT c.Name FROM CarsCatalog c";
            SqlCommand sqlCommand = new SqlCommand(sqlQuery, sqlConnection);

            sqlConnection.Open();

            SqlDataReader sqlReader = sqlCommand.ExecuteReader();

            while (sqlReader.Read())
            {
                nameTextBlock.Text = sqlReader.GetString(0);
            }

            sqlConnection.Close();
        }
    }

ボタンをクリックしたときにそれを作成する方法は、SQLから次のID値を取得します。

4

2 に答える 2

1

一見すると、 while ループがテキストブロックを上書きしているように見えます。ループを終了した後、テキストブロックのテキストを更新します。次のようなものを試してください

 var sb = new StringBuilder();
 while (sqlReader.Read())
 {
     sb.AppendLine(sqlReader.GetString(0));
 }

 nameTextBlock.Text = sb.ToString();
于 2012-08-14T14:43:22.923 に答える
0

今まで取得したIDを保存しておき、保存したIDより大きい次のIDを取得することができます。例えば:

    using (var sqlConnection = new SqlConnection(...))
    {
        string sqlQuery = @"SELECT c.Name,c.ID FROM CarsCatalog c where c.ID > " 
                            + lastID.ToString();
        SqlCommand sqlCommand = new SqlCommand(sqlQuery, sqlConnection);

        sqlConnection.Open();

        SqlDataReader sqlReader = sqlCommand.ExecuteReader();

        if (sqlReader.Read())
        {
            nameTextBlock.Text = sqlReader.GetString(0);
            lastID = sqlReader.GetInt(1);
        }
    }
于 2012-08-14T14:57:01.557 に答える