0

在过去的几天里,我无法将任何固定参数传递给我的 SQL 查询。我尝试了所有可能的教程将参数传递给查询,但没有任何效果。

但是,我已经看到通过将固定参数直接放在查询中(方法 1)它工作得很好。

我没有看到在方法 2 中阻止了我的功能的运行。

当我说它不起作用时,在第一种方法中,我的阅读器已被填充,而在方法 2 中,我的阅读器为空

方法1:有效(我不需要这种功能)

public void VerifierVersionDejaPresnte(ParseurXML.DonneesGlobales donneGlobale)
{
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "select nom_projet from analyses where nom_projet='demonstration'";
    cmd.CommandType = CommandType.Text;
    OracleDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
        Console.WriteLine("Data already exist");
    else
        Console.WriteLine("Data doesn't exist");
}  

方法2:不起作用(我需要这种功能)

public void VerifierVersionDejaPresnte(ParseurXML.DonneesGlobales donneGlobale)
{
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "select nom_projet from analyses where nom_projet=:test";
    cmd.Parameters.Add(new OracleParameter("test", "demonstration"));
    cmd.CommandType = CommandType.Text;
    OracleDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
        Console.WriteLine("Data already exist");
    else
        Console.WriteLine("Data doesn't exist");
}
4

3 回答 3

0
String updateCmd;
        SqlCommand myCommandUpd;

updateCmd = "更新 RHRMVacationRequest SET [EmplId] = @Emplid WHERE RecId = @RecId";

        myCommandUpd = new SqlCommand(updateCmd, DataBase.GetConnetionToBase());
        myCommandUpd.Parameters.Add(new SqlParameter("@Emplid", SqlDbType.VarChar, 10));
        myCommandUpd.Parameters.Add(new SqlParameter("@RecId", SqlDbType.BigInt));

        myCommandUpd.Parameters["@Emplid"].Value = emplIdUpd.Text.Trim();
        myCommandUpd.Parameters["@RecId"].Value = Convert.ToInt64(RecIdUpd.Value.Trim());
        myCommandUpd.Connection.Open();
        myCommandUpd.ExecuteNonQuery();
于 2016-06-09T14:24:12.337 回答
0

经过几个小时的研究,我终于找到了解决方案:

  public Boolean VerifierVersionDejaPresnte(ParseurXML.DonneesGlobales donneGlobale)
    {
        string str = "demonstration";
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.BindByName = true;
        cmd.CommandText = "select * from analyses where nom_projet='"+str+"'";
        cmd.CommandType = CommandType.Text;
        OracleDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Console.WriteLine("Data already exist");
            return true;
        }
        Console.WriteLine("Data doesn't already exist");
        return true;
    }
于 2016-06-10T12:01:38.940 回答
0

可能是我记错了——也许我试过了:?它没有工作并使用:test - 但我想我遇到了你的问题,请检查下面的代码。

public void VerifierVersionDejaPresnte(ParseurXML.DonneesGlobales donneGlobale)
{
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "select nom_projet from analyses where nom_projet=:test";
    cmd.Parameters.Add(new OracleParameter(":test", "demonstration"));
    cmd.CommandType = CommandType.Text;
    OracleDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
        Console.WriteLine("Data already exist");
    else
        Console.WriteLine("Data doesn't exist");
}
于 2016-06-09T14:15:27.743 回答