无法将参数从const char转换为lnt

时间:2014-02-14 08:47:52

标签: sql c++-cli

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");

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试将字符串传递给采用整数的方法。传递列号:

quer->GetString(42)

我无法分辨哪个列对应于“名称”。使用“*”是不好的做法,因为它使您的代码依赖于“dbo.students”中列的顺序。并且,如果添加大列(例如学生的jpeg图片),性能将不必要地受到影响。只需按所需顺序列出所需的列。

也许你宁愿使用Item属性:

quer->default["name"]

但是,它返回一个对象,而不是一个字符串。

项目属性

在C#中,您可以将quer编入索引,但不能编入C++/CLI

  

Visual C ++不包含索引器;它有索引属性。至   使用C#索引器,像索引一样访问索引器   属性。

在这种情况下,您索引SqlDataReader.Item属性,这是默认属性,因此您使用default作为属性。