2

'AS'を含むSQLクエリを使用して入力するDataTableを作成しました。

例:

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' 
FROM tblUser

私が使う

SqlDataAdapter.Fill(dtblUserInfo) 

テーブルを埋め、列UserFullNameが内部にデータの文字列とともに存在することを確認します。

このセルを参照してみます

string strUserFullName = dtblUserInfo.Rows[0]["UserFullName"].ToString(); 

ウォッチを追加すると、そのセルにデータがあることがわかりますが、空の文字列が返されます。

Row [0]は、データを含むセルを含む行であり、通常はこの値をハードコーディングすることはありませんが、説明とデバッグを目的としています。

これについて何か考えはありますか?

ありがとう、スティーブ。

4

4 に答える 4

2

これを交換するだけ

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' 
FROM tblUser

これで

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName 
FROM tblUser

使用しているAS場合、一重引用符は必要ありません。新しい列名が必要です。列名が引用符で囲まれることはありません。

名前をUserFullNameのように2語に置き換える場合は、[]を使用する必要があります(例:[UserFullName])。

于 2012-08-01T15:38:35.707 に答える
0

セルにアクセスするときに例外を受け取っていないので、AS列の説明は問題ではないことがわかります。

さらに、行0にアクセスしたときにコードが例外をスローしないため、これはデータの取得が正しく機能していることを示しています。

これは、問題が実際にデータにあることを意味します。

これを確認するには、データベースに対してSQLスクリプトを直接実行します。結果にNULLが含まれている場合、これは問題の一部である可能性があります(ただし、SQL Serverでは、列の値がNULLになるはずです)。

于 2012-08-01T15:43:00.517 に答える
0

このコードを使用して、DataTableのコンテンツを確認できます。間違いを見つけるのに役立ちます。

foreach(DataRow dr in dtblUserInfo.Rows)
{
    foreach (var item in dr.ItemArray)
    {
        r += item.ToString();
    }
    r += "\r\n";
}
MessageBox.Show(r);

次に、クエリを確認します...

于 2012-08-01T16:02:29.297 に答える
0

PhaDaPhunkは言った:

これを交換するだけ

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' FROM tblUser

これで

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName FROM tblUser

ASを使用している場合、一重引用符は必要ありません。新しい列名が必要です。列名が引用符で囲まれることはありません。

これは良い答えです、そして私は小さな追加のヒントがあります。名前を「UserFullName」のように2語に置き換える場合は、[UserFullName]などの[]を使用する必要があります。

于 2012-08-01T16:12:44.143 に答える