У меня есть программа, которая имеет 11 переменных, которые необходимо вставить в базу данных SQL 2008 Express. Все работает до тех пор, пока переменные, которые могут быть NULL, являются NULL. Тогда SQL не получает данные. Вот мой код и оцените все, что может помочь:Как предотвратить предоставление нулевых значений в таблице
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";
}
Что вы хотите сделать, если произошло нулевое значение? Запретить вставку? Вставить значение по умолчанию? – derpirscher
Объявите столбцы как 'NOT NULL' или добавьте ограничение' NOT NULL'. –
1 главное: использовать параметры для предотвращения sql-injection! .... –