簡體   English   中英

如何在Oracle SQL查詢中傳遞參數?

[英]How to pass parameters in a oracle SQL query?

在過去的幾天里,我無法將任何固定參數傳遞給我的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");
}

可能是我想起了錯誤的方法-也許我嘗試過:? 並且它不起作用並使用了: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");
}
String updateCmd;
        SqlCommand myCommandUpd;

updateCmd =“ UPDATE 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();

經過許多小時的研究,我終於找到了解決方案:

  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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM