小编sal*_*ere的帖子

从SqlDataReader命令中选择列值

我有一个包含SQL中两列的表,我想从中提取值.但问题是我不知道如何在C#代码中检索第2列的值.我正在使用SQL Server 2008和VS. 我是否必须在SP中使用OUTPUT参数?如果是这样,我将如何指定此SP?我已经尝试过OUTPUT参数,但是我无法创建OUTPUT参数而没有错误,因为我也试图选择COLUMN_NAME.此查询返回了4列,我只想获得此列数.应该有一个更简单的方法来做到这一点,不是吗?这适用于SQL,但不适用于C#.

这是我的SP:

CREATE PROCEDURE [dbo].[getColumnNames]
    @TableName varchar(25) 
AS
    SELECT name 'COLUMN_NAME', (
         SELECT COUNT(ID)
         FROM syscolumns WHERE id = (
             SELECT id
             FROM sysobjects
             WHERE name= @TableName)) 'ROW_COUNT'
    FROM syscolumns
    WHERE id = (SELECT id FROM sysobjects WHERE name= @TableName)
    RETURN
Run Code Online (Sandbox Code Playgroud)

这是我的C#代码调用此SP:

public static SqlDataReader DisplayTableColumns(string tt)
{
    SqlDataReader dr = null;
    string TableName = tt;
    string connString = "Data Source=.;AttachDbFilename=\"C:\\Program Files\\Microsoft SQL Server\\...";
    string errorMsg;

    try
    {
        SqlConnection conn2 = new SqlConnection(connString);
        SqlCommand cmd = conn2.CreateCommand(); …
Run Code Online (Sandbox Code Playgroud)

c# sql sqldatareader

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

替换文件路径中的分隔符字符

我正在VS 2008中开发一个C#Web应用程序.我让用户选择一个输入文件,然后将文件路径存储在一个字符串变量中.但是,它将此路径存储为"C:\\folder\\...".所以我的问题是如何将此文件路径转换为单个"\"?

谢谢你们所有的帮助!请原谅我,因为我是ASP.NET开发的新手.这更多是我在上下文中的代码.首先,我想看看目录是否存在.如果我检查文件是否存在,我想我不必检查这个.但这应该还能正常吗?目前我的"路径"字符串变量没有按照我需要的方式显示出来.我不确定如何制定这个陈述.最终我想执行ReadAllText语句(参见最后一行).

protected void btnAppend_Click(object sender, EventArgs e)
{
    string fullpath = Page.Request.PhysicalPath;
    string fullPath2 = fullpath.Replace(@"\\", @"\");

    if (!Directory.Exists(fullpath2))
    {
    string msg = "<h1>The upload path doesn't exist: {0}</h1>";
    Response.Write(String.Format(msg, fullpath2));
    Response.End();
}
    string path = "@" + fullpath2 + uploadFile.PostedFile.FileName; 

    if (File.Exists(path))
    {
        // Create a file to write to.
        try
        {
            StreamReader sr = new StreamReader(path);
            string s = "";
            while(sr.Peek() > 0)
                s = sr.ReadLine();
            sr.Close();
        }
        catch (IOException exc)
        {
            Console.WriteLine(exc.Message + …
Run Code Online (Sandbox Code Playgroud)

c# replace delimiter visual-studio-2008

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

类型'_Default'已包含定义

我正在开发一个C#VS 2008/SQL Server 2008网站.我有一个Gridview.我在下面包含了Default.aspx和aspx.cs文件.但是当我构建这个时,我得到以下错误:

Type'_Default'已经包含'btnOWrite'的定义

我需要做些什么来解决这个问题?我现在没有收到任何错误; 只是这个网格没有显示出来.谢谢!

ASPX文件:

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">
    <asp:Panel runat="server" ID="AuthenticatedMessagePanel">
        <asp:Label runat="server" ID="WelcomeBackMessage"></asp:Label>
        <table>
            <tr>
                <td>
                    <asp:Label ID="tableLabel" runat="server" Font-Bold="True" Text="Select target table:"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="inputLabel" runat="server" Font-Bold="True" Text="Select input file:"></asp:Label>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <asp:Label ID="feedbackLabel" runat="server"></asp:Label>
                    <asp:SqlDataSource ID="SelectTables" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks3_SelectTables %>"
                        SelectCommand="getTableNames" SelectCommandType="StoredProcedure">
                        <SelectParameters>
                            <asp:QueryStringParameter DefaultValue="Person" Name="SchemaName" QueryStringField="SchemaName"
                                Type="String" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                    <asp:GridView ID="GridView1" DataSourceID="SelectTables" runat="server" Style="width: 400px;"
                        CellPadding="4" ForeColor="#333333" …
Run Code Online (Sandbox Code Playgroud)

c# gridview sql-server-2008 visual-studio-2008

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

如何在SQL中查找重复记录?

我正在尝试开发一个插入唯一记录的查询,但是在尝试插入重复记录时收到SQL Server主键错误.我能够使用此查询插入一些值,但不能为此记录插入(score_14).

所以现在我试图通过以下查询找到重复记录.挑战在于我的PK基于3列:StudentID,MeasureDate和MeasureID - 所有这些都来自下面未提到的不同表格.

但这只能让我知道 - 相反,我想只返回计数> 1的记录.我该怎么做?

select count(a.score_14) as score_count, A.studentid, A.measuredate, B.measurename+' ' +B.LabelName 
from [J5C_Measures_Sys] A
join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID 
join sysobjects so on so.name = 'J5C_Measures_Sys' 
join syscolumns sc on so.id = sc.id 
join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
where so.type = 'u' and sc.name = 'score_14' and a.score_14 is not null 
AND A.STUDENTID IS NOT NULL AND A.MEASUREDATE IS NOT NULL AND B.MEASURENAME IS NOT NULL
--and count(a.score_14)>1
group …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server duplicates sql-server-2008

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

如何将数据标签添加到柱形图?

我是SSRS 2008的新手.我在报告中添加了一个柱形图,但我没有看到向此图表添加数据标签的方法.我该怎么做呢?

谢谢你,斯科特.我查了但是我看不到显示数据标签.它只是:图表属性,图表区域属性,系列属性,图例属性,布局,选择,更改图表类型,以及添加新标题,图例或图表区域.我在寻找正确的地方吗?

charts reporting-services ssrs-2008

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

SSRS如何移动行组?

我正在使用SSRS 2008,我创建了一个包含多个分组的Tablix.但是,我现在看到我的最新分组低于细节.这是一个错误,因为我应该在我的详细信息组之前的tablix中进行所有分组.我的所有小组都彼此相邻.如何重新定位此组以使其位于详细信息组之前?

单独注意:有没有办法合并一系列行的单元格?我只知道如何一次合并一行单元格!有没有办法复制n行?或者我是否必须一次复制一行?

是的,行组实际上位于"详细信息"组下方.见附图. 在此输入图像描述

在此输入图像描述

matrix reporting-services ssrs-2008

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

在T-SQL中如何显示给定表名的列?

我试图列出我选择的任何Adventureworks表中的所有列.我可以执行哪些T-sQL语句或存储过程来查看所有列的列表?我想使用我的C#Web应用程序输入一个输入参数= table_name,然后获取所有column_names的列表作为输出.现在我正在尝试执行sp_columns存储过程,但是我不能只使用select和exec组合的一列.有人知道怎么做这个吗?

感谢大家的所有回复,但没有一个答案符合我的要求.让我更多地为您解释我的问题.下面的查询返回我需要的内容.但我的问题是将这个逻辑合并到一个带有输入参数的SP中.所以这是成功的SQL语句:

select col.name from sysobjects obj inner join syscolumns col 
    on obj.id = col.id
    where obj.name = 'AddressType' 
     order by obj.name
Run Code Online (Sandbox Code Playgroud)

目前我的SP看起来像:

CREATE PROCEDURE [dbo].[getColumnNames]
    @TableName VarChar(50)
    AS

    BEGIN
    SET NOCOUNT ON;
    SET @TableName = RTRIM(@TableName)
    DECLARE @cmd AS NVARCHAR(max)
    SET @cmd = N'SELECT col.name from sysobjects obj ' +
    'inner join syscolumns col on obj.id = col.id ' +
    'where obj.name = ' + @TableName
    EXEC sp_executesql @cmd
    END
Run Code Online (Sandbox Code Playgroud)

但我按上述方式运行

exec getColumnNames 'AddressType'
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

Invalid column name …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server exec adventureworks

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

无法将类型为'System.Object []'的对象强制转换为'System.String []'

我正在开发一个C#VS 2008/SQL Server网站应用程序.我是ASP.NET的新手.但是,我在以下代码的最后一行收到了上述错误.你能给我一些如何解决这个问题的建议吗?这编译正确,但运行后遇到此错误.

我想要做的就是将第二行"dt"中的项目存储到字符串参数中.第一行是标题,所以我不想要这些值.第二行是第一行值.我的SQL存储过程需要将这些值作为字符串.所以我想解析第二行数据并加载到2个字符串参数中.我在下面添加了更多代码.

DataTable dt; 
Hashtable ht;
string[] SingleRow;
...
SqlConnection conn2 = new SqlConnection(connString);
SqlCommand cmd = conn2.CreateCommand();
cmd.CommandText = "dbo.AppendDataCT";
cmd.Connection = conn2;
SingleRow = (string[])dt.Rows[1].ItemArray;
            SqlParameter sqlParam = cmd.Parameters.AddWithValue("@" + ht[0], SingleRow[0]);
            sqlParam.SqlDbType = SqlDbType.VarChar;
            SqlParameter sqlParam2 = cmd.Parameters.AddWithValue("@" + ht[1], SingleRow[1]);
            sqlParam2.SqlDbType = SqlDbType.DateTime;
Run Code Online (Sandbox Code Playgroud)

我的错误:

System.InvalidCastException was caught
  Message="Unable to cast object of type 'System.Object[]' to type 'System.String[]'."
  Source="App_Code.g68pyuml"
  StackTrace:
       at ADONET_namespace.ADONET_methods.AppendDataCT(DataTable dt, Hashtable ht) in c:\Documents and Settings\Admin\My Documents\Visual Studio 2008\WebSites\Jerry\App_Code\ADONET methods.cs:line 88
  InnerException: 
Run Code Online (Sandbox Code Playgroud)

c# sql-server-2005-express visual-studio-2008

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

如何用CSV数据更新SQL表?

我正在尝试使用源CSV文件中的新列更新我的一个SQL表.此文件中的这些CSV记录已存在于我的SQL表中,但它们缺少此CSV文件中的某些列.

我已经将新列添加到我的SQL表中.但现在我只需要从新列导入数据.我怎么能做到最好?

我正在尝试使用SSIS 2008来做到这一点.我创建了一个平面文件CSV数据源.然后我添加了一个OLE DB命令.我按如下方式设置SQL命令:

update berkeley.dbo.j5c_ALL_DATA 
set disabilitycode=[Stu Pri Dis],
IEPID=SpecED
,[MT_AR_CR]=[Met At-Rsk Crit]
      ,[ECP]=[Early Childhood Program]
      ,[REF_CFC]=[Ref by CFC]
      ,[IEP_COM_DT]=[IEP Cmp Date]
      ,[E1_NUM]=[EI Nbr]
      ,[RDIT]=[Reason for Delay in Transition]
      ,[MT_PFA_HI]=[Met PFA Inc Crt]
      ,[FS]=[Family Structure]
      ,[Hm_Sch_RCDTS]=[RCDTS Home]
      ,[Srv-Sch_RCDTS]=[RCDTS Serve]
from berkeley.dbo.j5c_ALL_DATA A join Berkeley_CSV2 b ON
A.studentid = B.[SAP ID] and A.BegEnrollDate = B.[Enroll Date]
Run Code Online (Sandbox Code Playgroud)

其中Berkeley_CSV2是我的CSV平面文件连接管理器的名称.但在此我得到一个错误:

The connection manager "Berkeley_CSV2" is an incorrect type.  The type required is "OLEDB".  The type available to the component is "FLATFILE".
Run Code Online (Sandbox Code Playgroud)

您是否可以向我推荐添加此数据或其他SQL命令的替代方法?

sql csv oledb ssis

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

如何使用EXCEPT插入静态表?

我正在开发SSMS 2008 R2 T-sql查询.目前我的查询如下:

INSERT rd_scs_only_clients
SELECT DISTINCT en.clientid_c
FROM cd.enrollments en 
WHERE en.agency_c in ('SCCR','SCRP') AND DATEDIFF(DAY, GETDATE(), startdate_d) > 90
EXCEPT
SELECT DISTINCT en.clientid_c
FROM cd.enrollments en 
WHERE en.agency_c not in ('SCCR','SCRP')
Run Code Online (Sandbox Code Playgroud)

但这导致0条记录,因为它似乎没有将INSERT语句下面的所有代码都识别为属于同一查询.我怎么能改写这个?

t-sql except sql-server-2008

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