标签: sqlparameter

将null分配给SqlParameter

以下代码给出了一个错误 - "没有从DBnull到int的隐式转换".

SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex== null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;
Run Code Online (Sandbox Code Playgroud)

c# dbnull sqlparameter

177
推荐指数
6
解决办法
26万
查看次数

Size属性的大小为0

我正在社交网络上工作,我的一个程序返回一个VARCHAR输出.所以这就是我写的:

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar);
job1.Direction = ParameterDirection.Output;
Run Code Online (Sandbox Code Playgroud)

但是出现此错误:

String [1]:Size属性的大小无效.

c# sql-server asp.net stored-procedures sqlparameter

37
推荐指数
3
解决办法
4万
查看次数

如何在C#中创建NVarchar(max)Sql参数?

我有以下代码使用存储过程拉回DataTable并输入字符串参数@JobNumbers,这是动态创建的作业编号字符串(因此长度未知):

using (SqlConnection connection = new SqlConnection(con))
        {
            SqlCommand cmd = new SqlCommand("dbo.Mystoredprocedure", connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@JobNumbers", SqlDbType.VarChar, 4000);
            cmd.Parameters["@JobNumbers"].Value = JobNumber;

            SqlDataAdapter da = new SqlDataAdapter(cmd);

            connection.Open();
            da.Fill(JobDetails);
        }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我当前将JobNumber参数设置为4000的长度,这应该足以承担大约500个作业号并且应该足够了.但是,有可能在奇怪的场合需要更多.所以,我想知道,有没有办法将参数设置为nvarchar(max)的等效sql参数类型?

我已经看过各种类似的问题(将参数传递给SQLCommand的最佳方法是什么?)但没有具体说明你是否可以(或不能)这样做.其次,如果我将存储过程中的@JobNumber参数设置为nvarchar(max),甚至需要这样做,因此我可能根本不需要在C#中设置长度?如果我这样做,这将有潜在的性能问题,如此问题中所建议的在添加SqlCommand参数时何时应该使用"SqlDbType"和"size"?

c# sql nvarchar sqlparameter

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

INERE IN(ID数组)

我有webservice,它传递了一组int.我想按如下方式执行select语句,但不断出错.我需要将数组更改为字符串吗?

[WebMethod]
public MiniEvent[] getAdminEvents(int buildingID, DateTime startDate)
{    
    command.CommandText = @"SELECT id,
                            startDateTime, endDateTime From
                            tb_bookings WHERE buildingID IN
                            (@buildingIDs) AND startDateTime <=
                            @fromDate";

    SqlParameter buildID = new SqlParameter("@buildingIDs", buildingIDs);
}
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server ado.net sqlparameter

27
推荐指数
4
解决办法
7万
查看次数

默认值设置为0的SqlParameter无法按预期方式工作

我做的是这样的:

SqlParameter param = new SqlParameter("@Param", 0) { SqlDbType = SqlDbType.Int };

private void TestParam(SqlParameter param) {
   string test = param.Value.ToString();  // Getting NullReferenceException here
}
Run Code Online (Sandbox Code Playgroud)

但是,当我这样说时,我停止获取异常:

SqlParameter param = new SqlParameter("@Param", SqlDbType.Int)  { Value = 0 };

private void TestParam(SqlParameter param) {
    string test = param.Value.ToString();  // Everything OK
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么SqlParameter假设0与null相同?

编辑: MSDN在此解释:SqlParameter构造函数

.net c# .net-3.5 sqlparameter

26
推荐指数
2
解决办法
9026
查看次数

如何将XML从C#传递到SQL Server 2008中的存储过程?

我想将xml文件传递给sql server存储过程,如下所示:

CREATE PROCEDURE BookDetails_Insert (@xml xml)
Run Code Online (Sandbox Code Playgroud)

我想比较一些字段数据与其他表数据,如果匹配,则必须将记录插入到表中.

要求:

  1. 如何将XML传递给存储过程?我试过这个,但它不起作用:[工作]

    command.Parameters.Add(
        new SqlParameter("@xml", SqlDbType.Xml)
        {
            Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml,
                               XmlNodeType.Document, null))
        });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如何访问存储过程中的XML数据?

编辑:[工作]

 String sql = "BookDetails_Insert";
        XmlDocument xmlToSave = new XmlDocument();
        xmlToSave.Load("C:\\Documents and Settings\\Desktop\\XML_Report\\Books_1.xml");

        SqlConnection sqlCon = new SqlConnection("...");
        using (DbCommand command = sqlCon.CreateCommand())
        {
            **command.CommandType = CommandType.StoredProcedure;**
            command.CommandText = sql;
            command.Parameters.Add(
              new SqlParameter("@xml", SqlDbType.Xml)
              {
                  Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml
                             , XmlNodeType.Document, null))
              });

            sqlCon.Open();
            DbTransaction trans = sqlCon.BeginTransaction();
            command.Transaction = trans;

            try
            { …
Run Code Online (Sandbox Code Playgroud)

c# xml sql-server stored-procedures sqlparameter

25
推荐指数
1
解决办法
6万
查看次数

为什么SqlParameter名称/值构造函数将0视为null?

我在一段代码中发现了一个奇怪的问题,即即使其参数与数据源中的记录匹配,adhoc SQL查询也没有产生预期的输出.我决定将以下测试表达式输入到即时窗口中:

new SqlParameter("Test", 0).Value
Run Code Online (Sandbox Code Playgroud)

这给了null我一个让我挠头的结果.似乎SqlParameter构造函数将零视为空值.以下代码生成正确的结果:

SqlParameter testParam = new SqlParameter();
testParam.ParameterName = "Test";
testParam.Value = 0;
// subsequent inspection shows that the Value property is still 0
Run Code Online (Sandbox Code Playgroud)

谁能解释这种行为?这是故意的吗?如果是这样,它可能相当危险......

c# sql-server ado.net sqlparameter

25
推荐指数
2
解决办法
6536
查看次数

System.Data.SqlClient.SqlParameter.IsNullable的目的是什么?

我目前正在尝试为数据库中的所有存储过程编写一个简单的C#包装类.

在C#中构建一些参数时,我注意到属性SqlParameter.IsNullable,并想知道这是什么.据我所知,不可能将存储过程参数声明为NOT NULL,因此始终允许将NULL传递给任何参数.

通过测试,似乎将IsNullable属性设置为false无效,仍然允许将SqlParameter.Value属性设置为null.

任何人都可以解释这个属性的目的吗?

谢谢你的期待.

寻求赏金的答案者应该查看这些链接:

如何将NULL限制为存储过程SQL Server的参数?

SQL参数IsNullable

我假设SqlParameter.IsNullable仅在......时才有意义?

http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/b7a08616-58d1-4cdc-a3e9-9353e292667b

.net sql sql-server ado.net sqlparameter

23
推荐指数
2
解决办法
2032
查看次数

SqlCommand参数大小混乱

我有以下代码行:

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int, 4).Value = linkID;
Run Code Online (Sandbox Code Playgroud)

但是,我对使用它有点困惑size.这是说它的4个字节大小?或者4的长度1234是可以接受但是12345太大了?

c# sqlparameter

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

SQLCommand.Parameters.Add - 如何给出十进制值大小?

你会如何指定:

Decimal(18,2)
Run Code Online (Sandbox Code Playgroud)

在这:

SqlComm.Parameters.Add("@myValue", SqlDbType.Decimal, 0, "myValue");
Run Code Online (Sandbox Code Playgroud)

目前我已经precision = 2从设计方面定义了属性.我只是好奇如何从代码中完成这个.谢谢

c# sqlparameter

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