我有一个包含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) 我正在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#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) 我正在尝试开发一个插入唯一记录的查询,但是在尝试插入重复记录时收到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) 我是SSRS 2008的新手.我在报告中添加了一个柱形图,但我没有看到向此图表添加数据标签的方法.我该怎么做呢?
谢谢你,斯科特.我查了但是我看不到显示数据标签.它只是:图表属性,图表区域属性,系列属性,图例属性,布局,选择,更改图表类型,以及添加新标题,图例或图表区域.我在寻找正确的地方吗?
我正在使用SSRS 2008,我创建了一个包含多个分组的Tablix.但是,我现在看到我的最新分组低于细节.这是一个错误,因为我应该在我的详细信息组之前的tablix中进行所有分组.我的所有小组都彼此相邻.如何重新定位此组以使其位于详细信息组之前?
单独注意:有没有办法合并一系列行的单元格?我只知道如何一次合并一行单元格!有没有办法复制n行?或者我是否必须一次复制一行?
是的,行组实际上位于"详细信息"组下方.见附图.
我试图列出我选择的任何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) 我正在开发一个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) 我正在尝试使用源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命令的替代方法?
我正在开发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语句下面的所有代码都识别为属于同一查询.我怎么能改写这个?