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

时间:2015-10-05 09:29:16

标签: c#

我必须从数据库中获取数据并在我的表单中输入文本框。我的表单有文本框和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;

3 个答案:

答案 0 :(得分:1)

更改

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

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

答案 1 :(得分:1)

你可以做这样的事情

由于.ToString()已经是一个字符串,因此无需继续调用getValue。并且还需要注意必须在''单引号中引用字符串值。

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

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

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

答案 2 :(得分:1)

您可以通过将查询更改为

来获得结果
cmd.CommandText = "Select DESCRIPTION FROM CMPPOJECT WHERE PROJECTNAME = 'prime'";

即通过在传递标识符中添加引号。但这样做不安全并且可能会暴露出sql注入问题。例如,如果有人尝试使用像>这样的关键字进行搜索如果ProjectName = 'Anil的项目',请注意有三个引号导致查询混淆

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

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();