【发布时间】:2021-09-02 11:25:07
【问题描述】:
我有这个运行良好的 CSharp WinForms 代码
SqlConnection loginCon = new SqlConnection
("Data Source=MORTDECAI;Initial Catalog=d_Authentication;Integrated Security=True;Pooling=False;");
SqlCommand connectionCommand = new SqlCommand
("Select * From d_Info where Username=@username COLLATE Latin1_General_CS_AS and Password=@password COLLATE Latin1_General_CS_AS", loginCon);
connectionCommand.Parameters.AddWithValue("@username", textUsername.Text);
connectionCommand.Parameters.AddWithValue("@password", textPassword.Text);
connectionCommand.Connection = loginCon;
loginCon.Open();
SqlDataAdapter adaptData = new SqlDataAdapter(connectionCommand);
DataSet databaseData = new DataSet();
DataTable virtualTable = new DataTable();
adaptData.Fill(databaseData, "Login");
virtualTable = databaseData.Tables["Login"];
loginCon.Close();
int count = databaseData.Tables[0].Rows.Count;
if (count == 1)
{
if (virtualTable.Rows[0][1].ToString() == "Administrator"){
//some codes}
注意最后一行:if (virtualTable.Rows[0][1].ToString() == "Administrator")
当在 C++/CLI 上应用相同的代码时,最后一行无法按预期工作。这是 C++/CLI 中的代码
adaptData->Fill(dtbaseData, "AdminTable");
dtTable = dtbaseData->Tables["AdminTable"];
Database->Close();
sqlCount = dtbaseData->Tables[0]->Rows->Count;
if (sqlCount == 1) {
if (dtTable->Rows[0][1]->ToString() == "Administrator") {
this->Hide();
res_load->Show();
}
我收到以下错误:
有什么好的方法来处理这个错误吗?
问候,
乔伊
【问题讨论】:
-
不是 C++ 程序员,但
Rows[0]->ItemArray[1](或Rows[0]->Item[1]?)有什么改变吗?我问是因为DataRowCollection[0]返回第一个 DataRow 然后在 C# 中调用[1]将使用默认索引器 Item 属性,但我真的不知道 C++ 是否支持默认索引器 -
@CaiusJard 是的,
Item[1]表示给定行数据的sql列,其中第一行是[0] -
所以它应该可以解决问题.. ?
-
我仍然需要调用存储数据的索引号
-
数据表有结果吗?我认为您没有从数据库中获取任何数据,这就是它失败的原因。检查您的连接字符串以确保它与工作代码匹配。您在工作和非工作示例中使用的是同一台机器吗?