【问题标题】:Prepared SELECT statement in .Net在 .Net 中准备 SELECT 语句
【发布时间】:2011-09-05 19:42:43
【问题描述】:

我不明白我做错了什么,我似乎无法使用准备好的语句进行 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;
}

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

【问题讨论】:

  • 我不知道它是否与此事有关,但根据文档(dev.mysql.com/doc/refman/5.1/en/…)看起来准备好的语句中的变量应该以@为前缀,而不是?.
  • 我读到你必须使用 @ 来表示准备好的语句,而不是 ?因为它导致了兼容性问题。我现在不确定!

标签: c# mysql select prepared-statement


【解决方案1】:

要填充 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;
}

【讨论】:

  • 这是我正在寻找的答案,非常感谢。是否需要进行 try/catch ?我可以用 if/else 检查 td 表的行吗?
  • 使用 try catch...取决于.. 但是,鉴于您的代码,您始终可以检查 ds.Tables["result"].Rows.Count > 0
【解决方案2】:

你需要使用SqlDataAdapter

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

SqlDataAdapter 通过映射Fill 提供了这个桥梁,它改变了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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2015-06-01
    相关资源
    最近更新 更多