4

我有这部分代码,SELECT SqlCommandcolumn char(20)结果总是返回0- 这是因为我不知道如何改进我的代码,所以它会返回 char(20) - 插入此列中的值。

 SqlCommand sc = new SqlCommand("SELECT doklad FROM netpokl WHERE id_dok=" + newIdentity, spojeni);
 spojeni.Open();

 int id_dok = Convert.ToChar(sc.ExecuteScalar());

 spojeni.Close();

 MessageBox.Show("" + id_dok);

 SqlCommand sc2 = new SqlCommand("UPDATE kliplat set doklad=@doklad WHERE id="+newIdentity, spojeni);
 sc2.Parameters.AddWithValue("@doklad", id_dok);

 spojeni.Open();
 sc2.ExecuteNonQuery();
 spojeni.Close();

有人可以帮我改进我的代码吗?

4

1 回答 1

4
SqlCommand sc = new SqlCommand(string.Format("SELECT doklad FROM netpokl WHERE id_dok='{0}'", newIdentity), spojeni);
object obj = sc.ExecuteScalar();
if(obj == null) ; //Should show some message or throw exception
string id_dok = obj.ToString().PadRight(20);
//...
SqlCommand sc2 = new SqlCommand(string.Format("UPDATE kliplat set doklad=@doklad WHERE id='{0}'",newIdentity), spojeni);
//...

顺便说一句:我不认为这是必要的。事实上,你应该检查它的长度是否 > 20,那么字符串应该被截断。您的数据库表也应该使用nvarchar(20)

于 2013-08-16T21:45:28.203 回答