【问题标题】:How do i assign the Textbox value to Oracle SQL Query C#如何将文本框值分配给 Oracle SQL 查询 C#
【发布时间】:2019-05-05 05:30:19
【问题描述】:

将输入的 texbox 值分配给 Sql 查询 |C#|Oracle

如何将文本框值分配给我的 SQL 查询 C#

在上图中,我输入了 Tablename = PERSONDETAILS 这个在 textBox1 中输入的值。Text 应该作为参数传递给我的 SQL 查询。所以在 SQl 查询中对表名进行硬编码会减少

我希望包含的实际代码

select dbms_metadata.get_ddl('TABLE',table_name,user) AS my_ddl from all_tables where owner ='HR' AND table_name ='PERSONDETAILS'"

代码:

OracleConnection con = new OracleConnection();
con.ConnectionString = conString;
con.Open();

OracleCommand cmd = con.CreateCommand();
cmd.Parameters.Add("userid", OracleDbType.Varchar2, 20).Value = textBox1.Text.ToString();
cmd.Parameters.Add("tableName", OracleDbType.Varchar2, 20).Value = texttablename.Text.ToString();
//cmd.CommandText = "select * from all_all_tables WHERE table_name=:tableName";
cmd.CommandText ="select dbms_metadata.get_ddl('TABLE',table_name,user) AS my_ddl from all_tables where owner = :userid AND table_name = :tableName";
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
    textBox6.Text = reader.GetString(0);
}
con.Close();

【问题讨论】:

    标签: c# sql oracle


    【解决方案1】:

    您需要通过OracleCommandParameters 属性将文本框的值作为参数传递给您的命令。

    因此,您需要在代码中包含以下内容:

    cmd.CommandText = "select * from all_all_tables WHERE table_name=:tableName";
    cmd.Parameters.Add("tableName", OracleType.VarChar, 20).Value =  textBox1.Text;
    

    关于 cmets 的更新:

    cmd.CommandText ="select dbms_metadata.get_ddl('TABLE',table_name,user) AS my_ddl from all_tables where owner = :userid AND table_name = :tableName";
    // here you might want to use appropiate datatype
    cmd.Parameters.Add("userid", OracleDbType.Varchar2, 20).Value = textBox1.Text;
    cmd.Parameters.Add("tableName", OracleDbType.Varchar2, 20).Value = texttablename.Text;
    

    【讨论】:

    • 我如何为此传递值 - cmd.CommandText ="select dbms_metadata.get_ddl('TABLE',table_name,user) AS my_ddl from all_tables where owner =':userid' and table_name =':表名'";
    • Michal 你能帮帮我吗
    • @raj 我不明白...如果你需要传递额外的参数,只需按照相同的逻辑并使用:cmd.Parameters.Add("userid", OracleType.VarChar, 20).Value = "userId"; 请注意,您需要为此参数选择适当的数据类型(因为它是 ID,所以我认为整数会是不错的选择)。
    • Michal:我已经更新了我的帖子,请看一下。它正在工作,但对于我的实际查询它不起作用,请指导我
    • @raj 您的操作顺序错误,请参阅我的更新。
    猜你喜欢
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2012-01-03
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多