私は、SQL 2008 Express DBに挿入する必要のある11個の変数を持つプログラムを持っています。すべての変数は、NULLになる可能性のある変数がNULLになるまで動作します。その後、SQLはデータを取得しません。ここに私のコードがあり、助けてくれれば幸いです。テーブルにNULL値を許可しないようにする方法
private void PostDatatoServer()
{
String connectionString = @"Data Source=LUCKYTIGER\SQLEXPRESS;Initial Catalog=John;Integrated Security=True";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
textBox1.Text = "Connection made";
SqlCommand cmd = con.CreateCommand();
string str = "";
str += "INSERT INTO Parsed(Date, Gal, Sys, Sl, ST, PN, PlayN, Sym, Rk, All, Rel)";
str += "VALUES(@Date, @Gal, @Sys, @Sl, @ST, @PN, @PlayN, @Sym, @Rk, @All, @Rel)";
SqlCommand cmd = new SqlCommand(str, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@Date", uegParser.strTime));
cmd.Parameters.Add(new SqlParameter("@Gal", Convert.ToInt16(uegParser.strGalaxyNum)));
cmd.Parameters.Add(new SqlParameter("@Sys", Convert.ToInt16(uegParser.strSystemNum)));
cmd.Parameters.Add(new SqlParameter("@Sl", uegParser.intSlot));
cmd.Parameters.Add(new SqlParameter("@ST", uegParser.intSlotType));
if (uegParser.strPlanetName == "")
cmd.Parameters.Add(new SqlParameter("@PN", SqlDbType.NVarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@PN", uegParser.strPlanetName));
if (uegParser.strPlayerName == "")
{
cmd.Parameters.Add(new SqlParameter("@PlayN", DBNull.Value));
TextBox2.Text = "Null player name";
}
else
{
cmd.Parameters.Add(new SqlParameter("@PlayN", uegParser.strPlayerName));
}
if (uegParser.strSymbols == "")
cmd.Parameters.Add(new SqlParameter("@Sys", DBNull.Value));
else
cmd.Parameters.Add(new SqlParameter("@Sym", uegParser.strSymbols));
if (uegParser.strRank == "")
cmd.Parameters.Add(new SqlParameter("@Rk", DBNull.Value));
else
cmd.Parameters.Add(new SqlParameter("@Rk", uegParser.strRank));
if (uegParser.strAlliance == "")
cmd.Parameters.Add(new SqlParameter("@All", DBNull.Value));
else
cmd.Parameters.Add(new SqlParameter("@All", uegParser.strAlliance));
cmd.Parameters.Add(new SqlParameter("@Rel", uegParser.intRelationship));
cmd.ExecuteNonQuery();
con.Close();
TextBox2.Text = "Connection closed";
}
null値が発生した場合はどうしますか?挿入を防止する?デフォルト値を挿入しますか? – derpirscher
列を 'NOT NULL'として宣言するか、' NOT NULL'制約を追加してください。 –
1つの大きなこと:SQLインジェクションを防ぐためにパラメータを使用してください!... –