如何从C#中的表值函数中获取值

时间:2017-06-03 22:07:29

标签: c# sql-server visual-studio tsql

我有一个程序,我必须显示

  1. 事件描述(OpisDogodka)
  2. 位置(Lokacija)
  3. 时间(ura) 我的表值得函数:

    <div id="root">i am root</div>

    我连接服务器的方法:

         [dbo].[DobiDogodek](
         @Ime nvarchar(100), @Datum date)
         RETURNS TABLE AS RETURN (SELECT OpisDogodka AS 'Opisdogodka',Lokacija, Ura FROM Dogodek WHERE Ime=@Ime AND Datum=@Datum) 
    

    我也试过使用Datatable和datarow。我也不确定如何使用Date。我知道如何使用DateTime,但我需要将日期和时间分开。我做错了什么?

    4.6.2017(欧洲中部时间上午11点40分)更新: 看来我得到了理想的结果

     public string Dobi_dogodek(string ime,string datum)
    {
        string a="";
        cmd = new SqlCommand("SELECT * FROM dbo.DobiDogodek(@Ime,@Datum)",povezava); //povezava = connectio and it succeeds to connect to the server.
    
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@Ime", ime);
        cmd.Parameters.AddWithValue("@Datum", datum); //how to pass date only?
        try
        {
            SqlDataReader Reader = cmd.ExecuteReader();
            while(Reader.Read())
            {
    
                a = Reader.GetString(0)+" "+Reader.GetString(1)+" "+Reader.GetString(3).ToString(); // get what?
    
                    }
                Uspeh = true;
        }
        catch (Exception e)
        {
            ex = e;
        }
        finally
        {
            povezava.Close();
        }
    
        return a;
    }
    

    现在我只需要根据我的要求拆分字符串,但这是一种更好的(不一定是简单的)方法吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

cmd.Parameters.AddWithValue("@Datum", Convert.ToDateTime(datum));

另见https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx

答案 1 :(得分:0)

运行时会发生什么?你收到错误信息了吗?是把它作为一个整数?你是否通过使用sql profiler看到sql server从应用程序获得了什么? 我会仔细检查,但我认为你的问题是你没有在我们的语句中添加变量引号,因此当它运行时它将它们作为整数进行评估。试试"SELECT * FROM dbo.DobiDogodek('@Ime','@Datum')"。自从我使用像EF这样的东西以来已经很久了......