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