标签: dbcommand

如何从SQL查询生成List <String>?

如果我有一个DbCommand定义执行类似的东西:

SELECT Column1 FROM Table1
Run Code Online (Sandbox Code Playgroud)

生成List<String>返回记录的最佳方法是什么?

没有Linq等,因为我正在使用VS2005.

c# sql visual-studio-2005 list dbcommand

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

为什么"ExecuteNonQuery"中的"Non"?

我知道这不是一个有用的问题的地狱,但我不禁被它所困扰.

那么,
为什么所说的方法(在*Command类中)被称为
ExecuteNonQuery而不是ExecuteQuery

这些SQL语句不是我们在DBs,查询中抛出的吗?

.net sqlcommand oledbcommand dbcommand executenonquery

18
推荐指数
1
解决办法
1271
查看次数

从C#DbCommand向SQL DB插入NULL

        DbParameter param = comm.CreateParameter();
        param = comm.CreateParameter();
        param.ParameterName = "@StaffId";
        if (!string.IsNullOrEmpty(activity.StaffId))
            param.Value = activity.StaffId;
        param.DbType = DbType.String;
        comm.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

以上不起作用(显然),对象未实例化.我正在尝试在未填充StaffId时将NULL插入数据库.我怎样才能做到这一点?

c# sql dbcommand

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

将参数从DbCommand复制到另一个DbCommand

如何将DbCommand参数复制到另一个DbCommand,我想要一个DbCommand与我的上一个参数相同的新参数DbCommand.但现在使用不同的sql字符串.

.net c# enterprise-library dbcommand input-parameters

9
推荐指数
1
解决办法
7754
查看次数

SQL0666 - SQL查询超出指定的时间限制或存储限制

我定期使用Odbc连接字符串调用DB2数据库时收到此错误消息.我已经尝试将DbCommand对象的CommandTimeout设置为多个值,但我仍然收到以下错误.

SQL0666 - SQL查询超出指定的时间限制或存储限制.

是否有一个技巧来阻止错误输出.这很奇怪,因为相同的查询有时会起作用,有时会超时.任何帮助,将不胜感激.谢谢!

c# db2 odbc ssis dbcommand

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

捕获唯一键冲突的通用方法

我使用System.Data.Common.DbCommand将新行插入数据库.关键是,这一行已经存在.

try
{
    [...]
    DbCommand insertCommand = [...]
    insertCommand.ExecuteScalar();
    [...]
}
catch (System.Exception exception)
{
   [...]
   throw;
}
Run Code Online (Sandbox Code Playgroud)

如果我将显式捕获System.Data.SqlClient.SqlException,我可以像下面一样评估ErrorNumber.

try
{
  //insertion code
}
catch(SqlException ex)
{
  if(ex.Number == 2627)
  {
     //Violation of primary key. Handle Exception
  }
}
Run Code Online (Sandbox Code Playgroud)

SqlException上下文中的ErrorNumber 2627意味着违反唯一键.请参阅https://msdn.microsoft.com/en-us/library/ms151757%28v=sql.110%29.aspx

到现在为止还挺好.因为我正在使用DbCommand,因此使用不同类型的关系数据库管理系统,我正在寻找一种更通用的方式来捕获这种违反唯一键约束的行为.

感谢帮助.

c# exception sqlexception dbcommand

7
推荐指数
1
解决办法
1165
查看次数

SqlParameter DbType.Date-&gt; SqlDbType.DateTime转换

我正在使用通用IDbCommand函数(在非SqlCommand帮助器方法中)将SqlCommand.DbType设置为DbType.Date,类似于以下内容:

        var param = command.CreateParameter();

        param.DbType = DbType.Date;
        param.ParameterName = field;
        param.Value = ToDb(val);

        command.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

并将生成的param.DbType覆盖为DbType.DateTime。(我故意想要SqlDbType.Date,因为列/索引是Sql Server类型的Date,而不是DateTime。)果然,当我反编译时,我看到SqlParameter.DbType设置调用了MetaType.GetMetaTypeFromDbType,它具有以下功能:

internal static MetaType GetMetaTypeFromDbType(DbType target)
{
  switch (target)
  {
    ... 

    case DbType.Date:
    case DbType.DateTime:
      return MetaType.MetaDateTime;
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,强制转换是有意的,相反,我必须做一些骇人听闻的事情,例如:

        var param = command.CreateParameter();

        var sqlParam = param as SqlParameter;
        if (sqlParam != null)
        {
            sqlParam.SqlDbType = SqlDbType.Date;
        }
        else
        {
            param.DbType = DbType.Date;
        }

        param.ParameterName = field;
        param.Value = ToDb(val);

        command.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么要强制转换?这是从早期版本的Sql Server / framework继承而来的,在早期版本中也许不存在Date,并且可以合理地假设人们不知道DbType.Date和DbType.DateTime之间的区别?还是发生了一些更根本的事情?

没有没有特殊大小写SqlParameter的实际解决方法?

(今天早上搜索时,我发现很少有参考文献,所以也许在另一轮咖啡因之前我只是缺少了一些明显的东西?总是感谢!)

.net c# sql-server sqlcommand dbcommand

5
推荐指数
1
解决办法
939
查看次数

数据库Command对象的参数顺序真的很重要吗?

我正在调试一个数据库操作代码,我发现虽然代码永远不会失败,但从未发生过正确的UPDATE.这是代码:

        condb.Open();
        OleDbCommand dbcom = new OleDbCommand("UPDATE Word SET word=?,sentence=?,mp3=? WHERE id=? AND exercise_id=?", condb);
        dbcom.Parameters.AddWithValue("id", wd.ID);
        dbcom.Parameters.AddWithValue("exercise_id", wd.ExID);
        dbcom.Parameters.AddWithValue("word", wd.Name);
        dbcom.Parameters.AddWithValue("sentence", wd.Sentence);
        dbcom.Parameters.AddWithValue("mp3", wd.Mp3);
Run Code Online (Sandbox Code Playgroud)

但经过一些调整后,这个工作:

        condb.Open();
        OleDbCommand dbcom = new OleDbCommand("UPDATE Word SET word=?,sentence=?,mp3=? WHERE id=? AND exercise_id=?", condb);
        dbcom.Parameters.AddWithValue("word", wd.Name);
        dbcom.Parameters.AddWithValue("sentence", wd.Sentence);
        dbcom.Parameters.AddWithValue("mp3", wd.Mp3);                         
        dbcom.Parameters.AddWithValue("id", wd.ID);
        dbcom.Parameters.AddWithValue("exercise_id", wd.ExID);
Run Code Online (Sandbox Code Playgroud)
  1. 为什么在OleDb连接的情况下必须在WHERE子句中给出最后一个参数是如此重要?之前使用过MySQL,我可以(并且通常会)首先编写WHERE子句的参数,因为这对我来说更合乎逻辑.

  2. 一般查询数据库时参数顺序是否重要?一些性能问题还是什么?

  3. 是否有其他数据库(如DB2,Sqlite等)需要维护的特定顺序?

更新:我删除?并包括有和没有的专有名称@.订单非常重要.在这两种情况下,只有在最后提到WHERE子句参数时才会发生实际更新.更糟糕的是,在复杂的查询中,很难知道自己哪个订单是Access期望的,并且在订单被更改的所有情况下,查询都没有完成预期的任务而没有警告/错误!

c# database ms-access oledbcommand dbcommand

4
推荐指数
1
解决办法
3361
查看次数

如何将Nullable DateTime变量的null值转换为DbNull.Value

我有一个可以为空的DateTime变量.我想把它写到SQL DB.当我尝试插入时:

如果变量有值,则没有问题.

但如果它没有值,则插入中断错误.

我想问:我们如何通过DbCommand参数将可空的DateTime插入Sql?

(PS:Sql列也可以为空.)

DateTime? myDate = null;
DbCommand dbCommand = new DbCommand();
dbCommand.Parameters.Add("NullableSqlDateField", DbType.DateTime, myDate);
Run Code Online (Sandbox Code Playgroud)

c# sql-server datetime nullable dbcommand

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

与Linq的DbCommand?

我用的 DbCommand是: System.ComponentModel.Component

我正在用params构建一个对象:

DbCommand command = _webERPDB.GetStoredProcCommand("mySp");
_webERPDB.AddInParameter(command, "@a", DbType.Int32, policyId);
_webERPDB.AddInParameter(command, "@b", DbType.Int32, appPolicyPrintQaCheckListId);
_webERPDB.AddInParameter(command, "@c", DbType.Int32, createdBy);
Run Code Online (Sandbox Code Playgroud)

现在,我想使用linq迭代它:

IEnumerable<DbParameter> t = from a in command.Parameters select a;
Run Code Online (Sandbox Code Playgroud)

但它产生以下错误:

在此输入图像描述

c# linq dbcommand

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

Cannot Pass Parameter in DbCommand in Entity Framework

I have error when I try to pass parameter to stored procedure using DbCommand

Error returned:

Procedure or function 'Procedure_Name' expects parameter '@TEID', which was not supplied.

These are my procedure parameters:

@PageNumber INT = 1,
@PageSize INT = 50,
@StartTime nvarchar(max) = -1 ,
@EndTime nvarchar(max) = -1 ,
@Month NVARCHAR(2) = -1,
@Year NVARCHAR(4) = -1,
@Day NVARCHAR(2) = -1,
@Hour NVARCHAR(2)=-1,
@TEID nvarchar(max) ,
@IgnoreIdlingTime int=120,
@DrivingTime int=300,--5 minutes by default
@CalculationFactor nvarchar(10)='speed'
Run Code Online (Sandbox Code Playgroud)

My code to execute …

c# sql-server entity-framework dbcommand

2
推荐指数
1
解决办法
2615
查看次数