带空格的 C# SqlCommand 文本框
C# SqlCommand textbox with spaces
我正在使用 Visual Studio 2015,Windows 表格申请
我的 SqlCommand
有效——除了在 Street
列 (Street VARCHAR(70)
) 中,它从文本框 (streetTextBox.Text
) 获取输入,如果如果不是数字,则有一个 space OR。我可以手动输入数据库,只要街道文本框只是一个没有 spaces.
的数字,命令就可以正常工作
comm2 = new SqlCommand("insert into Addresses(Street, City, aState, Zip) values (" + streetTextBox.Text + ",'" + cityTextBox.Text + "','" + aStateTextBox.Text + "','" + zipTextBox.Text + "')", conn);
try
{
comm.ExecuteNonQuery();
comm2.ExecuteNonQuery();
MessageBox.Show("Saved...");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
为什么不允许保存真实的街道? (即 555 街道名称)
您收到错误是因为如果它是 varchar,您需要在它周围加上单引号,而您却遗漏了它们。
values ('" + streetTextBox.Text + "'
但是请使用Parameters,你可以防止像这样的问题和SQL注入
您的代码为 sql injection 攻击敞开了大门。
您需要使用 parameters 而不是将字符串连接到 sql.
comm2 = new SqlCommand("insert into Addresses(Street, City, aState, Zip) values (@Street, @City,@aState, @Zip)", conn);
comm2.Parameters.Add("@Street", SqlDbType.NVarChar).Value = streetTextBox.Text;
comm2.Parameters.Add("@City", SqlDbType.NVarChar).Value = cityTextBox.Text;
comm2.Parameters.Add("@aState", SqlDbType.NVarChar).Value = aStateTextBox.Text;
comm2.Parameters.Add("@Zip", SqlDbType.NVarChar).Value = zipTextBox.Text;
try
{
comm.ExecuteNonQuery();
comm2.ExecuteNonQuery();
MessageBox.Show("Saved...");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
我正在使用 Visual Studio 2015,Windows 表格申请
我的 SqlCommand
有效——除了在 Street
列 (Street VARCHAR(70)
) 中,它从文本框 (streetTextBox.Text
) 获取输入,如果如果不是数字,则有一个 space OR。我可以手动输入数据库,只要街道文本框只是一个没有 spaces.
comm2 = new SqlCommand("insert into Addresses(Street, City, aState, Zip) values (" + streetTextBox.Text + ",'" + cityTextBox.Text + "','" + aStateTextBox.Text + "','" + zipTextBox.Text + "')", conn);
try
{
comm.ExecuteNonQuery();
comm2.ExecuteNonQuery();
MessageBox.Show("Saved...");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
为什么不允许保存真实的街道? (即 555 街道名称)
您收到错误是因为如果它是 varchar,您需要在它周围加上单引号,而您却遗漏了它们。
values ('" + streetTextBox.Text + "'
但是请使用Parameters,你可以防止像这样的问题和SQL注入
您的代码为 sql injection 攻击敞开了大门。 您需要使用 parameters 而不是将字符串连接到 sql.
comm2 = new SqlCommand("insert into Addresses(Street, City, aState, Zip) values (@Street, @City,@aState, @Zip)", conn);
comm2.Parameters.Add("@Street", SqlDbType.NVarChar).Value = streetTextBox.Text;
comm2.Parameters.Add("@City", SqlDbType.NVarChar).Value = cityTextBox.Text;
comm2.Parameters.Add("@aState", SqlDbType.NVarChar).Value = aStateTextBox.Text;
comm2.Parameters.Add("@Zip", SqlDbType.NVarChar).Value = zipTextBox.Text;
try
{
comm.ExecuteNonQuery();
comm2.ExecuteNonQuery();
MessageBox.Show("Saved...");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}