有一个:
enum SomeEnum
{
A = 0,
B = 1,
C = 2
}
Run Code Online (Sandbox Code Playgroud)
现在编译器允许我写:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0: // <--- Considered SomeEnum.A
break;
case SomeEnum.B:
break;
case SomeEnum.C:
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
0被认为SomeItems.A.但我写不出来:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0:
break;
case 1: // <--- Here is a compilation error.
break;
case SomeEnum.C:
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
为什么只存在隐式转换0?
我试图通过调用存储过程将数据插入SQL Server数据库,但我收到错误
*过程或函数'Insertion'需要参数'@Emp_no',但未提供*
我的存储过程被调用Insertion.我已经彻底检查了它,没有参数丢失,我也用标签检查了它.标签显示了值,但我不知道为什么我收到错误.
我的代码是
try
{
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Clear();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Insertion";
cmd.Connection = con;
if (rdb_Male.Checked)
{
int @Emp_no = Convert.ToInt32(txtbx_Empno.Text);
string @Emp_name = txtbx_Emp_Name.Text;
double @phone = Convert.ToDouble(txtbx_Phone.Text);
string @Email = txtbx_Email.Text;
string @Password = txtbx_Pwd.Text;
string @Gender = rdb_Male.Text;
DateTime @Dob = Convert.ToDateTime(dob);
string @Address = txtbx_Address.Text;
string @Designation = txtbx_Designation.Text;
string @Qualification = txtbx_Qual.Text;
double @Experience = Convert.ToDouble(txtbx_Exp.Text);
double @Salary = Convert.ToDouble(txtbx_Sal.Text);
DateTime @Doj = Convert.ToDateTime(doj);
} …Run Code Online (Sandbox Code Playgroud) 我有六行参数,如下所示:
cmd.Parameters.AddWithValue("@variable1", myvalue1);
cmd.Parameters.AddWithValue("@variable2", myvalue2);
cmd.Parameters.AddWithValue("@variable3", myvalue3);
Run Code Online (Sandbox Code Playgroud)
等等.
有没有办法在不直接插入cmd.CommandText的情况下压缩这一点?
编辑:我想我可以使用一个很好的老式阵列.我决定坚持这一点.
我现在已经阅读了很多有关 SQL 注入并试图阻止它的内容。我读过几篇关于如何以及为何使用的文章
Command.Parameters.Add()
Run Code Online (Sandbox Code Playgroud)
但我仍在寻找它如何以及为何防止 SQL 注入的答案。
MSDN 没有太多这方面的信息。
这是我如何使用它的示例:
SqlCommand myCommand = new SqlCommand("SELECT * FROM table WHERE name = @name ", myConnection);
myCommand.Parameters.Add("@name", SqlDbType.NVarChar, 20).Value = "MaMu2";
Run Code Online (Sandbox Code Playgroud)
我的代码对于 SQL 注入是否安全,还是我错了?
编辑:主要问题是:它内部如何工作?