使用Prepared Statement检索数据

时间:2017-06-30 13:46:27

标签: c# mysql .net

我一直在尝试从我的数据库(MySQL)中检索数据。 我一直在网上寻找样本,但没有任何东西与我想要做的事情相匹配,即使在Stack上也是如此。 所以这就是我的尝试:

public void RetrieveData()
{
    cmd = new MySql.Data.MySqlClient.MySqlCommand();
    cmd.Connection = conn;
    //connecting to database

    Connect();

    try
    {
        cmd.CommandText = "SELECT * FROM storing WHERE id=1";
        cmd.Prepare();

        ResultSet rs = cmd.CommandText;
    }
}

但是我在ResultSet上有一个错误,说“由于它的保护级别不能访问ResultSet”。 cmd是在类中创建的,因为我需要它进入我的其他函数。

有谁知道我应该写什么? 我只想检索所有数据(数据库中的5列)并使用以下命令在控制台中打印:

location = rs.GetString(2, @location);
Console.WriteLine("Location is : " + location ); 

这是一个例子,但我真的不知道该写些什么。

提前感谢帮助人员!

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找的方法是

... 
try
{
    cmd.CommandText = "SELECT * FROM storing WHERE id=1";

    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        var location = reader.GetString(2);
        Console.WriteLine("Location is : " + location ); );
    }
}
...

答案 1 :(得分:0)

我试过了:

            String longitude = "";
            String latitude = "";
            bool status = false;
            String path = "";
            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    longitude = reader["longitude"].ToString();
                    latitude = reader["latitude"].ToString();
                    status = (bool) reader["status"];
                    path = reader["path"].ToString();
                }
            }

            Console.WriteLine("Longitude : " + longitude);
            Console.WriteLine("Latitude : " + latitude);
            Console.WriteLine("Path : " + path);

我第一次尝试它时,它没有工作,所以我删除了它。然后我再试一次,现在就可以了。不知道我从奇数版本中做了什么改变,但现在看起来还不错。