2

C# で SqlDataAdapter を使用してデータテーブルを埋めようとしています。私はオブジェクトにあまり詳しくありません。基本的には、他の誰かのコードのテンプレートを使って、それがどのように機能するかを理解しようとしています。基本形はこちら。

        SqlCommand command = new SqlCommand(@"SELECT * FROM tblEmployees WHERE Name = " + firstSSN,connection);

        SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText.ToString(), connection.ConnectionString.ToString());

        SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);
        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.Fill(table);

そして、それは彼らのフォームでうまく機能します。私も同じことを試みましたが、nvarchar をデータ型 int の列に変換しようとするとエラーが発生しました。MSDN を調べて、次のことを試しました。1) tblEmployees からの適切な名前/型/主キーを使用して、列を DataTable に追加します。2) DataAdapter に TableMapping を追加しますが、この部分の構文が正しいかどうかは 100% 確信が持てません。そうです:

adapter.TableMappings.Add("work", "dbo.tblEmployees");

そのために。DataTable の名前は「work」ですが、構文が正しいかどうかわかりません。SQL Server Management Studio に表示されるテーブル名を入力しましたが、正しくリンクしているかどうかをテストする方法がわかりません。

ご協力いただきありがとうございます。私はこれに頭を悩ませてきたので、まったく別の方法で目標に近づき、持っているものを捨てようとしています。

4

1 に答える 1

2

一見すると、コードの最初の行を見ると、次の場所に注目しますfirstSSN

@"Select * From tblEmployees WHERE Name = " + firstSSN

'Name' はエラー メッセージが参照している nvarchar フィールドであると想像できます。firstSSN が整数値のみの場合は、次のように firstSSN の周りに '' マークを付けてみてください。

@"Select * From tblEmployees WHERE Name = '" + firstSSN + "'"

それ以外の場合は、フィールド「名前」のタイプが、コマンドに渡すパラメーターのタイプと一致していることを確認してください。これは、データ型の問題である可能性が最も高いです。

1 つお勧めします。先日 LINQ の実験を始めたところですが、LINQ は、データを引き出し、操作し、フィルター処理して使いやすいレコード セットにするのに非常に便利であることがわかりました。LINQ を使用してクエリを実行する方法については、あらゆる種類のドキュメントが用意されているので、時間があれば参照してください。お役に立てれば。

于 2010-08-20T21:02:12.143 に答える