いくつかのbool変数の値のテーブルへの更新に関する疑問があります。私の構造は次のとおりです。SQLテーブル内の変数の "リスト"の値を更新する最も良い方法
C#では、私は、SQL Server 2014年(百よりも)
を
public bool varName1 = false;
public bool varName2 = false;
public bool varName3 = false;
のようないくつかのブール変数などを持って、私は "DigitalInputs" と呼ばれるテーブルを持っており、そこに私は次のようなデータを持っています:
名前(nvarchar 255)|値(ビット)
VarName1 | True
VarName2 | False
VarName3 |真
など
私の質問ですが、私はそれを行うための最も効率的な方法になり、C#でのブール変数の値を持つ、SQL Serverのテーブルの値を更新したい場合は?
今私が使っていたものをした
using (SqlCommand command = new SqlCommand("UPDATE DigitalInputs SET Value = @VALUE WHERE Name = @NAME", connection))
{
command.Parameters.Add(new SqlParameter("NAME", "varName1"));
command.Parameters.Add(new SqlParameter("VALUE", varName1.ToString()));
command.ExecuteNonQuery(); //Execute the non query
command.Parameters.Clear(); //Clear the parameters to add later new ones
command.Parameters.Add(new SqlParameter("NAME", "varName2"));
command.Parameters.Add(new SqlParameter("VALUE", varName2.ToString()));
command.ExecuteNonQuery();
command.Parameters.Clear();
など
それは冒頭でうまく働いたが、今、100個の以上のブール変数で、それはゆっくりと、本当に(毎秒3回)を実行します。多分データテーブルやiEnumerableリストを使うことを考えていましたが、どのようにすればいいのか分かりません.C#とSQLでは本当に新しいものです。
// EDITEDは、TVP
に関する質問は、私は私が今持っていることで、DataTableのソリューションを実装するにはいくつかの問題を抱えている:SQLで
:
CREATE TYPE dbo.DigitalInputs AS TABLE
(
Name NVARCHAR(255),
Value BIT
)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE UpdateValue
(@tableData AS dbo.DigitalInputs READONLY)
AS
BEGIN
SET NOCOUNT ON
UPDATE dbo.DigitalInputs
SET dbo.DigitalInputs.Value = @tableData.Value
FROM dbo.DigitalInputs
INNER JOIN @tableData ON dbo.DigitalInputs.Name = @tableData.Name
END
私はこのプロシージャの作成でSQLの構文がわからない、私はSQL言語で少し失われています。 エラーCS0117:
そして、C#で
は:System.Data.SqlDbType' does not contain a definition for
構造化」SqlDbType.Structuredが存在していないと私はなぜ、私は次のエラーがいるか分からないよう DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Value", typeof(bool));
dataTable.Rows.Add("varName1", varName1);
//etc...
using (SqlCommand command = new SqlCommand("UpdateValue", connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("@tableData", dataTable);
parameter.SqlDbType = SqlDbType.Structured;
command.Parameters.Add(parameter);
}
に思えます。 Monodevelop 5.9.6を使用してUnity3Dでコードを書いています。
ありがとう、私はテーブル値のパラメータを試してみよう! – MetalxBeat
私はTVPで解決策を取り組んできましたが、私はそれを正しく理解することはできません。新しい質問を追加するために質問を編集しました。あなたがそれらを見ることができるなら、私は非常に感謝します、ありがとう! – MetalxBeat
遅延のお詫びあなたが今それを解決したと確信しています、もしあなたが使用している.netのバージョンを確認できますか?わかりませんが、以前のバージョンの.net 4.0では、msdnのドキュメントの下に存在していたとは思いません。 https://msdn.microsoft.com/en-us/library/system.data.sqldbtype(v=vs.90).aspx – touchofevil