所以我有一个包含以下列的表格: ID、姓名、地址等。
我一直在做一些研究,但我找不到正确的关键字来找出我想做的事情。我希望能够获取名称值(也就是说......“John Doe”肯定已经在数据库中......)并检索它的ID(从int MySQL值ID)。
我遇到了以下代码,但我似乎无法弄清楚如何扩展其限制以满足我的需求。
connection2.Open();
cmd.ExecuteNonQuery();
try
{
MySqlDataReader myReader = cmd.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine(myReader.GetString(myReader.GetOrdinal("id")));
}
myReader.Close();
}
finally
{
connection2.Close();
}
这也是我尽力想出来的。
MySqlConnection connection2 = new MySqlConnection("Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";");
string query = @"SELECT id FROM caregiverdatabse WHERE name Like '%" + caregiverNameDisp.Text + "%'";
MySqlCommand cmd = new MySqlCommand(query, connection2);
最佳答案
您应该用 sql 参数替换硬编码参数,但这里是您需要在此处执行的操作的一般概念。使用您当前的 sql 查询。
MySqlConnection sqlConn = new MySqlConnection();
MySqlCommand sqlCmd = new MySqlCommand();
string sSql = "SELECT id FROM caregiverdatabse WHERE name Like '%" + caregiverNameDisp.Text + "%'";
sqlConn.ConnectionString = "Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";";
sqlCmd.CommandText = sSql;
sqlCmd.CommandType = CommandType.Text;
sqlConn.Open();
sqlCmd.Connection = sqlConn;
MySqlDataReader reader = sqlCmd.ExecuteReader();
List<string> results = new List<string>();
while (reader.Read())
{
results.Add((reader["id"].ToString());
}
reader.Close();
sqlConn.Close();
请记住,您可以将读取器结果添加到字符串、上面的列表中,无论您想用它做什么。
关于C# MySQL 从与另一个匹配的列中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636266/