标签: sqlcommand

我需要处理MySqlCommand吗?

我发现在我的每个查询(需要自己的命令或写参数.clear())上编写一个using语句非常烦人,有时需要在using块之外声明变量.与没有处理物体的版本相比,它非常令人烦恼并且看起来更脏.

我需要处理它吗?如果我不这样做会发生什么?我知道在有对象时处理对象的好习惯.

.net mysql sqlcommand

3
推荐指数
1
解决办法
2254
查看次数

SqlCommand.Parameters.AddWithValue真的有用吗?

SqlCommand.Parameters.AddWithValue()查询有什么变化?

我希望:

  1. 它取代了每一个'角色'',

  2. 如果参数值是一个字符串或必须转换为字符串的东西,它会围绕值',所以例如select * from A where B = @hello将给出select * from A where B = 'hello world'.

  3. 如果参数值像整数一样"安全",它将按原样插入查询中,不带引号,因此select * from A where B = @one会给出select * from A where B = 1.

还有其他我不知道的变化吗?

.net t-sql sql-injection escaping sqlcommand

3
推荐指数
1
解决办法
1666
查看次数

这是一个防Sql注入的Asp.net代码吗?

问题:我有一个带有文本值的表单,以及一个必须根据文本值的值返回字符串查询的函数.

解决方案:我使用参数创建了一个SQLCommand查询,然后我将SQLCommand.CommandText放到一个字符串中,然后将其返回(将要处理查询的业务逻辑)

主要问题:它是sql注入证明吗?

代码示例:

sQuery = "select * from xy where x like '%@txtNameParameter%'";

SqlCommand cmd = new SqlCommand(sQuery);

cmd.Parameters.Add("@txtNameParameter", SqlDbType.VarChar);
cmd.Parameters["@txtNameParameter"].Value = txtName.Text;

string query = cmd.CommandText;
return query;
Run Code Online (Sandbox Code Playgroud)

如果主要问题是好的子问题:我是否应该将参数放入radiobutton和dropdownmenu的值或者它们是否注入防护?

asp.net parameters sql-injection sqlcommand sqlconnection

3
推荐指数
1
解决办法
372
查看次数

使用 ??运算符和处理空值

我从SQL Server 2008数据库返回标量值:

string reason = cmd.ExecuteScalar().ToString() ?? : "";
Run Code Online (Sandbox Code Playgroud)

我想确保if null返回,那reason = ""并且不是null.

我在这一行上收到错误:

错误3无效的表达式术语':'

怎么解决这个问题?

编辑:

谢谢你对冒号的更改,现在我在同一行上得到了这个异常:

string reason = cmd.ExecuteScalar().ToString() ?? "";
Run Code Online (Sandbox Code Playgroud)
System.NullReferenceException occurred
  Message="Object reference not set to an instance of an object."
Run Code Online (Sandbox Code Playgroud)

c# sql sqlcommand

3
推荐指数
3
解决办法
504
查看次数

如何在C#中删除Oracle数据库中的行?

当我想基于删除整行时,我遇到了问题id_curse.这是我的代码,这是我得到的错误:

Oracle.DataAccess.dll中发生了未处理的"Oracle.DataAccess.Client.OracleException"类型异常.

附加信息:

外部组件引发的异常.

你能帮我解决这个问题吗?我认为SQL命令中的代码对此不利.

private void button3_Click(object sender, EventArgs e)
{
    Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection(provider);
    Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand();

    conn.Open();
    cmd = new Oracle.DataAccess.Client.OracleCommand(" DELETE * from CURSE  WHERE ID_CURSA  = '" +   textBox1.Text + "'", conn);
    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

c# oracle sqlcommand

3
推荐指数
1
解决办法
7674
查看次数

如何在不检查null或0的情况下为sqlparameter NULL值赋值?

需要进行以下检查以检查空值.我有办法直接做到吗?

 if(node.ID==0)
 {
   cmd.Parameters["@ID"].Value = DBNull.Value;
 }
  else
  {
    cmd.Parameters["@ID"].Value = node.ID;
  }
Run Code Online (Sandbox Code Playgroud)

有没有办法我们可以通过这个检查和一个设计,我们可以避免对每个值进行重复检查?(顺便说一句,它只是一个逻辑,0对于我的情况被解释为NULL,但我也要求像字符串这样的可空对象一样)

c# database dbnull sqlcommand

3
推荐指数
1
解决办法
1663
查看次数

如何将表名传递给SqlCommand?

我试图将表名作为参数传递给我的查询,SqlCommand但它似乎没有工作.这是我的代码;

SqlConnection con = new SqlConnection( "server=.;user=sa;password=12345;database=employee" );
con.Open( );
SqlCommand cmd = new SqlCommand( "drop table @tbName" , con );
cmd.Parameters.AddWithValue( "@tbName" , "SampleTable" );
cmd.ExecuteNonQuery( );
con.Close( );
Run Code Online (Sandbox Code Playgroud)

c# ado.net sqlcommand

3
推荐指数
1
解决办法
4276
查看次数

如何在C#中使用存储过程返回结果列表?

这是我的存储过程:

    CREATE  Proc UpdateChecklist
(
    @TemplateId As INT
) as
begin
    select MF.CheckListDataId from TemplateModuleMap TM
    inner join ModuleField MF 
    on TM.ModuleId = MF.ModuleId
    where TM.TemplateId = @TemplateId and MF.CheckListDataId not in
    (select cktm.CheckListDataId from ChecklistTemplateMap cktm
    inner join ChecklistData ckd
    on cktm.CheckListDataId = ckd.Id
    where cktm.TemplateId = @TemplateId)
end
Run Code Online (Sandbox Code Playgroud)

所以我希望CheckListDataId这里有一个返回列表.我正在尝试使用Database.ExecuteSqlCommand()但尚未成功.我怎样才能返回CheckListDataId这里的清单?我需要修改我的存储过程吗?我是sql的新手.

有什么建议吗?这是一个ASP.NET MVC 5项目

c# sql-server asp.net-mvc stored-procedures sqlcommand

3
推荐指数
1
解决办法
5276
查看次数

使用SqlCommand.ExecuteScalar()时是否需要输入前1

我分析的代码SqlCommand,看到它工作正常(见CompleteExecuteScalar方法).但我不确定我应该top 1在查询中使用.例如我有select name from Person和表Person包含很多记录.我应该修改qry select top 1 name from Person吗?或者我可以保持qry原样,它不会影响性能/内存等?我担心服务器可以在输出之前缓冲一些数据.

c# sql-server performance sqlcommand

3
推荐指数
1
解决办法
361
查看次数

SqlConnection/SqlCommand 在关闭和处置后保持数据库在使用中

我正在尝试创建一个临时数据库以在 Xunit 中进行集成测试,但是当我尝试删除临时数据库时,出现错误:

无法删除数据库“TempDatabase_[numbers]”,因为它当前正在使用中。

简单地关闭和处理命令和连接似乎并不能切断它。

这是我失败的测试的精简版:

using System;
using System.Data.SqlClient;
using Xunit;

namespace Test
{
    public class Test_Raw_Spec
    {
        [Fact]
        public void PerformWorkInTemporaryDatabase()
        {
            string connectionStringTemplate = "Data Source=SQLEXPRESS;Initial Catalog={0};Integrated Security=SSPI;Connection Timeout=10";
            int dbNum = (new Random()).Next() % 1000000;
            int tblNum = (new Random()).Next() % 1000000;

            string nameTempDb = $"TempDatabase_{dbNum}";
            string nameTempTable = $"TempTable_{tblNum}";

            var sqlConnection1 = new SqlConnection(string.Format(connectionStringTemplate, "master"));
            var sqlCommand1 = new SqlCommand($"CREATE DATABASE {nameTempDb}", sqlConnection1);
            sqlConnection1.Open();
            sqlCommand1.ExecuteNonQuery();
            sqlCommand1.Dispose();
            sqlConnection1.Close();
            sqlConnection1.Dispose();

            var sqlConnection2 = new SqlConnection(string.Format(connectionStringTemplate, nameTempDb));
            var …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server sqlcommand sqlconnection

3
推荐指数
1
解决办法
84
查看次数