繁体   English   中英

必须从数据库中获取数据并进入文本框

[英]Have to fetch data from database and enter into textbox

我必须从数据库中获取数据并在我的表单中输入文本框。我的表单有文本框和gridview(仅适用于某些文本框)。我必须根据选定的网格视图cell = PROJECTNAME从数据库中获取数据并输入其他匹配的文本框标准。 我已为单个文本框完成了我的编码部分,并显示“{”ORA-00904:\\“PRIME \\”:无效的标识符“}”

请帮助我以下

OracleConnection con = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TEST"].ToString());
con.Open();
OracleCommand cmd = con.CreateCommand();
string prime = gdDisplay.SelectedRow.Cells[1].Text;

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = prime";
string str= cmd.ExecuteScalar().ToString();
txtDescription.Text = str;

更改

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = prime";

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = 'prime'";

你可以做这样的事情

没有必要继续调用.ToString()作为getValue已经是一个字符串。 并且还需要注意字符串值必须在''单引号中引用。

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = 'prime'";
var str= cmd.ExecuteScalar();

我们可以检查一下该值是否为null

if (str!= null) {
    txtDescription.Text = str.ToString();
}

除此之外你也可以使用它

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = 'prime'";
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
    txtDescription.Text = reader["DESCRIPTION"].ToString().Trim();
}

您可以通过将查询更改为来获得结果

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = 'prime'";

即通过向传递标识符添加引号。 但这样做并不安全 ,可能会暴露出SQL注入问题。 例如,如果有人试图使用关键字搜索 - > Where ProjectName = 'Anil's Project' ,请注意有三个引号会导致查询混淆

一个安全的方法和良好的实践从一开始就是使用参数。 这很简单。 喜欢

cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = @ProjectName";

cmd.Parameters.AddWithValue("@ProjectName", "prime"); // don't use  additional quotes inside like "'prime'"

string str= cmd.ExecuteScalar().ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM