在.Net中准备SELECT语句

时间:2011-05-31 21:10:07

标签: c# mysql select prepared-statement

我无法理解我做错了什么,我似乎无法使用预备语句进行SELECT。但是我可以用准备好的声明插入。

MySqlCommand cmd = new MySqlCommand("SELECT * FROM code_post WHERE name = ?postRequired LIMIT 1",  dbcon);
cmd.Parameters.Add(new MySqlParameter("?postRequired", requestString));
cmd.ExecuteNonQuery();

DataSet ds = new DataSet();
cmd.fill(ds, "result");
try {
             thisBlog = ds.Tables["result"].Rows[0];
} catch {
             invalid();
             return;
}

对此有任何建议将不胜感激!

2 个答案:

答案 0 :(得分:5)

要填充DataSet,您需要一个DataAdapter。

试试这个:

MySqlCommand cmd = new MySqlCommand("SELECT * FROM code_post WHERE name = ?postRequired LIMIT 1",  dbcon);
cmd.Parameters.Add(new MySqlParameter("?postRequired", requestString));
cmd.ExecuteNonQuery();

DataSet ds = new DataSet();
MySqlDataAdapter dAdap = new MySqlDataAdapter();
dAdap.SelectCommand = cmd;
dAdap.Fill(ds, "result");
try {
             thisBlog = ds.Tables["result"].Rows[0];
} catch {
             invalid();
             return;
}

答案 1 :(得分:3)

您需要使用SqlDataAdapter

DataAdapter表示一组数据命令和数据库连接,用于填充DataSet和更新SQL Server数据库。

SqlDataAdapter通过映射Fill提供此桥接,{{3}}更改DataSet中的数据以匹配数据源中的数据

检查以下语法:

private static DataSet SelectRows(DataSet dataset,
    string connectionString,string queryString) 
{
    using (SqlConnection connection = 
        new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(
            queryString, connection);
        adapter.Fill(dataset);
        return dataset;
    }
}