SqlConnection^ cond = gcnew SqlConnection(L"Data Source=localhost;Initial Catalog=vagifd;Integrated Security=True");
cond->Open();
SqlCommand^ comd = gcnew SqlCommand("select * from dbo.students order by name asc;", cond);
SqlDataReader^ quer = comd->ExecuteReader();
int a=1;
try{
while(quer->Read()){
label1->Text += quer->GetString("name");
a++;
}
}
catch(Exception^ ex){
MessageBox::Show(ex->Message);
}
我使用的是microsoft sql server 2008和visual studio 2010.我表中的列是char类型。问题是什么 ?错误行是
label1->Text += quer->GetString("name");
答案 0 :(得分:0)
问题是您正在尝试将字符串传递给采用整数的方法。传递列号:
quer->GetString(42)
我无法分辨哪个列对应于“名称”。使用“*”是不好的做法,因为它使您的代码依赖于“dbo.students”中列的顺序。并且,如果添加大列(例如学生的jpeg图片),性能将不必要地受到影响。只需按所需顺序列出所需的列。
也许你宁愿使用Item属性:
quer->default["name"]
但是,它返回一个对象,而不是一个字符串。
在C#中,您可以将quer
编入索引,但不能编入C++/CLI
Visual C ++不包含索引器;它有索引属性。至 使用C#索引器,像索引一样访问索引器 属性。
在这种情况下,您索引SqlDataReader.Item属性,这是默认属性,因此您使用default
作为属性。