4

コードのこの部分を取得しSELECT SqlCommandましcolumn 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 に答える