相关疑难解决方法(0)

为什么switch for enum接受隐式转换为0但没有任何其他整数?

有一个:

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

.net c# enums switch-statement

23
推荐指数
1
解决办法
1276
查看次数

存储过程或函数需要未提供的参数

我试图通过调用存储过程将数据插入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)

c# sql t-sql ado.net

16
推荐指数
3
解决办法
6万
查看次数

如何在一个语句中向SQL命令添加多个参数?

我有六行参数,如下所示:

    cmd.Parameters.AddWithValue("@variable1", myvalue1);
    cmd.Parameters.AddWithValue("@variable2", myvalue2);
    cmd.Parameters.AddWithValue("@variable3", myvalue3);
Run Code Online (Sandbox Code Playgroud)

等等.

有没有办法在不直接插入cmd.CommandText的情况下压缩这一点?

编辑:我想我可以使用一个很好的老式阵列.我决定坚持这一点.

c# sql

9
推荐指数
2
解决办法
2万
查看次数

Command.Parameters.Add() 如何防止 SQL 注入?C#

我现在已经阅读了很多有关 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 注入是否安全,还是我错了?

编辑:主要问题是:它内部如何工作?

c# sql-server sql-injection

-1
推荐指数
1
解决办法
5410
查看次数

标签 统计

c# ×4

sql ×2

.net ×1

ado.net ×1

enums ×1

sql-injection ×1

sql-server ×1

switch-statement ×1

t-sql ×1