Asp.net 如何在VisualStudio中编写SQL查询?

Asp.net 如何在VisualStudio中编写SQL查询?,asp.net,sql-server,visual-studio-2012,Asp.net,Sql Server,Visual Studio 2012,我想在VisualStudio中编写所有的insert、select和delete查询,但我不知道如何编写它们 SqlConnection con = new SqlConnection("Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True"); con.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO backup(Option

我想在VisualStudio中编写所有的insert、select和delete查询,但我不知道如何编写它们

SqlConnection con = new SqlConnection("Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True");
con.Open();

SqlCommand cmd = new SqlCommand("INSERT INTO backup(Option,EquipmentID,SerialNumber,Description,Location,DueDate,DaytoDue,EquipmentWithdraworRemarks,NCRorOOTHistory,LastOOTissuanceDate,AvailableinSapphire,ResponsiblePerson,CalibrationOption,CalibrationSourceorLab,YearofManufacturing,ManufacturerorVendor,CalibrationCost,AssetNo,CalibrationTAT,SendInDate,Status), SELECT * FROM Equipment where (SerialNumber = '" + TextBox2.Text + "' or EquipmentID = '" + TextBox1.Text + "' ), DELETE FROM Equipment where (SerialNumber = '" + TextBox2.Text + "' or EquipmentID = '" + TextBox1.Text + "' )", con);

cmd.ExecuteNonQuery();
con.Close();

SqlCommand(String)方法只接受一个参数,并使用查询文本初始化SqlCommand类的新实例。

SqlCommand(String)方法只接受一个参数,并使用查询文本初始化SqlCommand类的新实例。

您可以使用参数化查询,如下所示:

string connectionstring = "Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True";
            using (SqlConnection connection = new SqlConnection(connectionstring))
            {

                string sql = @"INSERT IntO [backup](Option,EquipmentID,SerialNumber,Description,Location,
                                DueDate,DaytoDue,EquipmentWithdraworRemarks,NCRorOOTHistory,LastOOTissuanceDate,
                                AvailableinSapphire,ResponsiblePerson,CalibrationOption,CalibrationSourceorLab,
                                YearofManufacturing,ManufacturerorVendor,CalibrationCost,AssetNo,CalibrationTAT,SendInDate,Status)
                                SELECT * FROM Equipment where SerialNumber = @serialnumber or EquipmentID = @equipmentId; 
                                DELETE FROM Equipment where SerialNumber = @serialnumber or EquipmentID = @equipmentId";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.Parameters.Add("@serialnumber", SqlDbType.NVarChar).Value = "testSerialNumber";
                    command.Parameters.Add("@equipmentId", SqlDbType.NVarChar).Value = "testequipmentid";
                    connection.Open();
                    command.ExecuteNonQuery();
                    connection.Close();
                }

            }

您可以使用参数化查询执行此操作,如下所示:

string connectionstring = "Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True";
            using (SqlConnection connection = new SqlConnection(connectionstring))
            {

                string sql = @"INSERT IntO [backup](Option,EquipmentID,SerialNumber,Description,Location,
                                DueDate,DaytoDue,EquipmentWithdraworRemarks,NCRorOOTHistory,LastOOTissuanceDate,
                                AvailableinSapphire,ResponsiblePerson,CalibrationOption,CalibrationSourceorLab,
                                YearofManufacturing,ManufacturerorVendor,CalibrationCost,AssetNo,CalibrationTAT,SendInDate,Status)
                                SELECT * FROM Equipment where SerialNumber = @serialnumber or EquipmentID = @equipmentId; 
                                DELETE FROM Equipment where SerialNumber = @serialnumber or EquipmentID = @equipmentId";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.Parameters.Add("@serialnumber", SqlDbType.NVarChar).Value = "testSerialNumber";
                    command.Parameters.Add("@equipmentId", SqlDbType.NVarChar).Value = "testequipmentid";
                    connection.Open();
                    command.ExecuteNonQuery();
                    connection.Close();
                }

            }

请使用参数…-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入,而应该使用实体框架,这样您就不必自己编写几乎没有SQL的语句了!代码< > SqLink 和<代码> Sql命令 >代码> IDISPOLISTION/COD> >因此,您应该考虑使用<代码>使用< /代码>这两个变量。什么是参数?对不起,我还是新手。请使用参数…-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入,而应该使用实体框架,这样您就不必自己编写几乎没有SQL的语句了!代码< > SqLink 和<代码> Sql命令 >代码> IDISPOLISTION/COD> >因此,您应该考虑使用<代码>使用< /代码>这两个变量。什么是参数?很抱歉,我还是新手。@naz Edyra,如果有任何混淆,请告诉我。对于插入查询,实际上我不知道每列的值。用户将根据序列号或设备id搜索数据。因此,数据将基于序列号或设备id显示。但并非所有数据都会显示给用户。某些数据仅存储在sql server中。但是,我希望移动用户看到并存储在sql server中的所有数据。那么对于价值,我应该放什么呢?是列名吗@AmirSo您想通过从设备表中选择来插入表备份吗?是的,没错。但它是根据用户。例如,如果用户选择序列号或设备id A,则与A相关的所有数据都将移动到备份表中。我想创建按钮删除,但不是删除数据,数据已移动到另一个表,即备份表@Amirone更多问题:表设备和备份中的列名称是否相同?@naz Edyra,如果有任何混淆,请告诉我。对于插入查询,实际上我不知道每列的值。用户将根据序列号或设备id搜索数据。因此,数据将基于序列号或设备id显示。但并非所有数据都会显示给用户。某些数据仅存储在sql server中。但是,我希望移动用户看到并存储在sql server中的所有数据。那么对于价值,我应该放什么呢?是列名吗@AmirSo您想通过从设备表中选择来插入表备份吗?是的,没错。但它是根据用户。例如,如果用户选择序列号或设备id A,则与A相关的所有数据都将移动到备份表中。我想创建按钮删除,但不是删除数据,数据已移动到另一个表,即备份表@Amirone更多问题:表设备和备份中的列名称相同吗?