簡體   English   中英

將 SQL 服務器連接轉換為 Oracle 數據庫連接(ASP.NET Core MVC 和 C#)

[英]Converting SQL Server connection to Oracle database connection (ASP.NET Core MVC & C#)

我需要一點幫助。 我正在嘗試修改我的函數以使它們在 Oracle 數據庫中工作,我需要能夠讓我的GetCreate方法在我的 Oracle 數據庫上工作。

這是我的創建方法:

public void CreateRow(Person person)
{
    using SqlConnection con = new SqlConnection(connectionString);

    SqlCommand cmd = new SqlCommand("SP_InserNewRow", con);
                         {
                              cmd.CommandType = CommandType.StoredProcedure;
                         }

    cmd.Parameters.AddWithValue("@CODE", person.CODE);
    cmd.Parameters.AddWithValue("@NAME", person.NAME);
    cmd.Parameters.AddWithValue("@LASTNAME", person.LASTNAME);

    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}

這是我的獲取方法:

public IEnumerable<Person>GetPersonList
{
    var listPerson = new List<Person>;

    using (SqlConnection con = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("select * from myview", con);
        cmd.CommandType = CommandType.StoredProcedure;

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
             var person = new Person();
             person.CODE = Convert.ToInt32(dr["CODE"].ToString());
             person.NAME = dr["NAME"].ToString();
             person.LASTNAME = dr["LASTNAME"].ToString();

             listPerson.Add(person);
        }

        con.Close();
   }

   return listPerson;
}

現在,我正在嘗試將上述方法連接到 Oracle 數據庫。

我添加了這個:

using Oracle.DataAccess.Client 
using Oracle.DataAccess

將我的字符串連接更改為:

"DATA SOURCE=10.204.3.1:1521/PROD;" + "PERSIST SECURITY INFO=True;USER ID=username; password=password; Pooling =False;"

我開始修改 Get 方法:

public IEnumerable<Person>GetPersonList
{
    var listPerson = new List<Person>();

    using (OracleConnection con = new OracleConnection(connectionString2))
    {
        OracleCommand cmd = new OracleCommand("select * from myview", con);
        cmd.Connection = con;
        cmd.InitialLOBFetchSize = 1000;
        cmd.CommandType = CommandType.StoredProcedure;

        var list = new listPerson();
        list.CODE = Convert.ToInt32(dr["CODE"].ToString());
        list.NAME = dr["NAME"].ToString();
        list.LASTNAME = dr["LASTNAME"].ToString();

        listPerson.Add(list);
    }

    con.Close();
}
return listPerson;

我有點迷路,可以幫我修改我的方法嗎?

編輯

readonly string connectionString = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxxxxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PROD)));User Id=xxx;Password=xxxx;"

public IEnumerable<Person>GetPersonList
        {
            var listPerson = new List<Person>();

            using (OracleConnection con = new OracleConnection(connectionString))
            {

                OracleCommand cmd = new OracleCommand("select * from myview", con);
                cmd.Connection = con;
                cmd.InitialLOBFetchSize = 1000;
                cmd.CommandType = CommandType.Text;
                con.Open();
                OracleDataReader dr = cmd.ExecuteReader();
                while (dr.Read()){
                var list = new Person();
                    list.CODE = Convert.ToInt32(dr["CODE"].ToString());
                    list.NAME = dr["NAME"].ToString();
                    list.LASTNAME = dr["LASTNAME"].ToString();

                    listPerson.Add(list);
                }
                con.Close();
            }
            return listPerson;
        }       

我的編輯工作得很好。 謝謝史蒂夫:)

暫無
暫無

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

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