将参数传递给预言机查询
本文关键字:查询 预言机 参数传递 | 更新日期: 2023-09-27 18:36:56
我正在获取我正在处理的服务器的 IP 地址,然后将检测到的 ip 传递给另一种方法,该方法从表中获取办公室代码 包含每个办公室的列表及其在 Oracle 数据库下的 IP 我传递的问题方法 2 中查询的 IP 请帮助
方法 1
private IPAddress Get_CurrentLocalIPAddress()
{
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
MessageBox.Show("Unable to detect IP Address","Network Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return null;
}
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
return host.AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);
}
方法 2
public void Find_OfficeCode()
{
string oradb = "User Id=user;Password=pwd;";
string commandStr = @"select DATABASE_NAME from office where UPPER(IP_ADDRESS)=:pOfficeIP";
using (OracleConnection conn = new OracleConnection(oradb))
using (OracleCommand cmd = new OracleCommand(commandStr,conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("pOfficeIP", OracleDbType.Varchar2).Value = Get_CurrentLocalIPAddress().ToString();
conn.Open();
IDataReader dr = cmd.ExecuteReader();
label3.Text = dr.GetString(dr.GetOrdinal("DATABASE_NAME")).ToString();
}
}
这
还不够好
string oradb = "User Id=user;Password=pwd;";
您需要添加"数据源"
string oradb = "Data Source=<XXXXXX>;User Id=user;Password=pwd";
在这里,您不需要"上部"
UPPER(IP_ADDRESS)=:pOfficeIP";
因为这是IP地址,通常是数字和点 - 123.345.567.789
.即使您出于某种原因需要,也要这样做
UPPER(IP_ADDRESS)=UPPER(:1);
当您添加参数时 - 执行
conn.Parameters.AddWithValue(":1", "my string")
由于您返回单个值 - 使用 ExecuteScalar
string ip = cmd.ExecuteScalar() As string
if (string.IsNullOrEmpty(ip)). . . .
或使用阅读器。而且由于您不抽象您的命令或连接,因此没有理由抽象读者
using (OracleDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
label3.Text = reader[0].ToString();
}
if (!reader.IsClosed) reader.Close();
}