我的表单中有2个控件,一个是int,另一个是float,我尝试使用“Convert.toString()”方法进行转换,但是它没有工作,我总是得到一个null值 这是我的代码:
string req = "select coef from amortissement where id_amort =@p";
textBox4.Text =Convert.ToString(GetRecordsetValue(req, textBox1.Text) as String)
req = "select Plan from amortissement where id_amort =@p";
textBox3.Text =Convert.ToString(GetRecordsetValue(req, textBox1.Text) as String);
这是GetRecordsetValue方法:
private Object GetRecordsetValue(string req, string sValParam)
{
// ExecuteScalar est optimisée pour récupérer une seule valeur
SqlCommand cmd = null;
try
{
cmd = new SqlCommand(req, con);
cmd.Parameters.AddWithValue("@p", sValParam);
return cmd.ExecuteScalar();
}
catch
{
return String.Empty;
}
finally
{
cmd.Dispose();
}
}
感谢帮助
答案 0 :(得分:1)
如果您的查询没有找到与WHERE条件匹配的任何记录,则GetRecordsetValue
中的代码将返回NULL。返回的null值将传递回Convert.ToString(),并抛出异常
string req = "select coef from amortissement where id_amort =@p";
object result = GetRecordsetValue(req, textBox1.Text);
if(result != null)
{
textBox4.Text = Convert.ToString(result);
}
else
{
// and/or a message to the user to correct its inputs.
textBox4.Text = "";
}
还存在GetRecordsetValue
内传递的值的问题。此值作为字符串传递,并作为字符串数据类型添加到参数集合中。如果字段id_amort
不是字符串(从名称看起来似乎),那么您的查询很可能无法找到记录。
我建议创建不同的GetRecordsetValue重载。例如
的整数