为什么找不到表字段

本文关键字:字段 找不到 为什么 | 更新日期: 2023-09-27 18:34:38

我对C#还很陌生,我正在尝试从表中提取记录。这是我的代码:

private void button1_Click(object sender, EventArgs e)
    {
        DataTable tbl = new DataTable("Users");
        DataRow[] foundRows;
        string srch = "username = '" + txtUsername.Text + "' AND '" + textBox1.Text + "'";
        try
        {
            foundRows = tbl.Select(srch);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.ToString());
            return;
        }
        string passwrd = foundRows[0][1].ToString();
        MessageBox.Show("Password: " + passwrd);
    }

现在,当它到达try命令时,它会抛出一个异常,并且消息框的一部分显示"找不到列[用户名]"。现在我检查了我的用户表,用户名字段在那里拼写正确,并且所有小写字母。那么有人可以解释为什么我会收到这条消息吗?谢谢。

为什么找不到表字段

DataTable.Select(( 实际上并没有连接到数据库检索信息,它只从它假定已经填充的 DataTable 内的行中读取。下面是一个示例,它将填充数据表,并避免 SQL 注入风险。在此示例中,我的应用程序将连接到名为"MyDatabase"的数据库,然后使用用户名"SomeUser"的筛选器查询"用户"表。然后它将获取"MyField"字段并将其读入一个名为someValue的字符串中。

    public static void Main()
    {
        string connectionString = "SERVER=MyServer;DATABASE=MyDatabase";
        SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE username = @username");
        cmd.Parameters.Add(new SqlParameter("username", "Someuser"));
        DataSet dataSet = ExecuteDataset(cmd, connectionString);
        DataTable table = dataSet.Tables[0];
        string someValue = table.Rows[0]["MyField"].ToString();
    }

    public static DataSet ExecuteDataset(SqlCommand cmd, String connectionString)
    {
        // Create the SqlConnection, DataAdapter & DataSet
        using (SqlConnection sqlConn = new SqlConnection(connectionString))
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        {
            DataSet dataSet = new DataSet();
            // Fill the DataSet
            cmd.Connection = sqlConn;
            da.Fill(dataSet);
            // Return the dataset
            return dataSet;
        }
    }

根据提供的代码,您尚未为 Users 表定义列。如果在提供的单击事件之外声明用户表,则会通过实例化新的数据表来否定它。