不能对类型为'system.data.datatable'的表达式应用索引

本文关键字:表达式 应用 索引 datatable data 类型 不能 system | 更新日期: 2023-09-27 18:09:37

我在SQL Server 2008中有一个Login表,我想检查dataccolumn中的有效用户。

我试图通过索引从dataccolumn检索值,但得到了错误…

不能对'system.data.datatable'类型的表达式应用索引。

代码如下:

 string connectionString = "Data Source=.''SQLEXPRESS;Initial Catalog=DRZare;Integrated Security=true;";
 SqlConnection LOGINCONNECTION = new SqlConnection(connectionString);
 string commandText = "select * from Login where UserName = @User and Password = @Pass";
 SqlCommand cmdlogin = new SqlCommand(commandText,    LOGINCONNECTION);
 cmdlogin.Parameters.AddWithValue("@User", TextBox5.Text);
 cmdlogin.Parameters.AddWithValue("@Pass",TextBox6.Text);
 LOGINCONNECTION.Open();
 DataTable logintable = new DataTable();
 logintable.Load(cmdlogin.ExecuteReader());
 for (int i = 0; i < logintable.Rows.Count; i++ )
 {
     User = Convert.ToString(logintable[i]["UserName"]);
     string Pass = Convert.ToString(logintable[i]["Password"]);
 }

不能对类型为'system.data.datatable'的表达式应用索引

错误信息明确指出问题所在。你不能在DataTable上使用indexer。但是你可以在DataRow中使用它。

更改为:

 foreach (DataRow row in loginTable.Rows )
 { 
     string User = Convert.ToString(row["UserName"]);
     string Pass = Convert.ToString(row["Password"]);
 }

谢谢你的帮助。代码被修改成这样,现在可以正常工作了。

string User = Convert.ToString(logintable.Rows[i]["UserName"]);
                string Pass = Convert.ToString(logintable.Rows[i]["Password"]