为什么找不到表字段
本文关键字:字段 找不到 为什么 | 更新日期: 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 表定义列。如果在提供的单击事件之外声明用户表,则会通过实例化新的数据表来否定它。