0

TxtFirstName、 、TxtMiddleNameと呼ばれる 3 つのテキストボックスがありTxtLastNameます。この情報を、列名が FullName のデータベースに挿入したいと思います。3 つの情報を結合して 1 つに挿入したいと思います。私がしたことは:

string _fullname = _lastname + "," + _firstname + middlename;
cmd = new SqlCommand("INSERT INTO TableVote (FullName) VALUES ('" + _fullname + "')", sc);

しかし、それは私にエラーが発生するようです。「文字列またはバイナリ データは切り捨てられます。ステートメントは終了しました。」

これを修正するにはどうすればよいですか?

4

2 に答える 2

4

このエラーは、文字列が列に許可されている最大長を超えていることを意味します。より長い値を許可するようにスキーマを調整するか、挿入する値を切り捨てる必要があります。

また、パラメータ化されたコマンドを実際に使用する必要があります。

cmd = new SqlCommand("INSERT INTO TableVote (FullName) VALUES (@fullname)");
cmd.Parameters.AddWithValue("@fullname", _fullname);

Sql インジェクション攻撃について調べてください。

更新:他の人が述べたように、名前を異なる列に保存することを検討する必要があります(つまり、、、FirstName。そうしないと、再計算が困難な情報を破棄します(たとえば、スキーマで最も一般的なミドルネームの統計を作成してみてください)MiddleNameLastName

于 2013-09-26T19:27:00.710 に答える