エンティティAuthorId
(int)(AuthorIdが主キー)、Name
(nvarchar)およびNationality
(nvarchar)というデータベースを持っています。また、そのデータベースの名前を表示するリストボックスと、リストボックス内の選択された項目のID、名前、国籍、各テキストボックスに1つずつ表示する3つのテキストボックスが表示されます。クエリ結果をリストボックスに表示するにはどうすればよいですか?
Conversion failed when converting the varchar value to data type int.
は、ここで私は、データを取得し、リストボックスに表示方法は次のとおりです:
public void GetAuthorData()
{
string connectionString = //connection string here
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
var query = "SELECT * FROM Author";
using (SqlCommand cmd = new SqlCommand(query, con))
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Author a = new Author();
a.Id = reader.GetInt32(0);
a.Name = reader.GetString(1);
a.Nationality = reader.GetString(2);
AuthorListBox.Items.Add(a);
}
}
}
}
そして、ここでは、私はテキストボックス内のデータを表示する方法は次のとおりです。私はそれが今、私は次のエラーを取得する持っているものと
private void AuthorListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DeleteAuthortButton.IsEnabled = true;
SaveChangesButton.IsEnabled = true;
var aa = sender as ListBox;
if (aa.SelectedItem != null)
{
var author = aa.SelectedItem.ToString();
string connectionString = //connection string here
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
var query = "SELECT * FROM Author where Name = '" + author + "'";
using (SqlCommand cmd = new SqlCommand(query, con))
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Author a = new Author();
a.Id = reader.GetInt32(0);
a.Name = reader.GetString(1);
a.Nationality = reader.GetString(2);
IdTextBox.Text = a.Id.ToString();
AuthorNameTextBox.Text = a.Name;
NationalityTextBox.Text = a.Nationality;
}
}
}
}
}
'a.Id = Convert.ToString(リーダー[0]);' –
あなたはまだ著者として 'VARの作者= aa.SelectedItem ...それを使用する項目をリストする者を設定;'とあなたドンDBから何かを再度選択する必要はありません。 – Reniuz
@DmitryBychenko私は "暗黙のうちにタイプ '文字列'を 'int'に変換することはできません。 – anek05