簡體   English   中英

斷開ADO.Net模式,從Datable加載到Sql Table

[英]Disconnected ADO.Net mode, load from Datable to Sql Table

我有兩個數據庫電影(id,名稱)和SessionsCinema(id,SessionTime,電影,大廳,價格)。 id-是自動增量行。

我在ado.net斷開連接模式下使用ms sql數據庫。 我想將設置保存到sql表。 可以對表“ Movies”進行更改,但是使用表“ SessionsCinema”時會出現一些錯誤。

//connection start
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "MYPC\SQLEXPRESS";
builder.InitialCatalog = "Cinema";
builder.IntegratedSecurity = true;
SqlConnection conn = new SqlConnection(builder.ConnectionString);
//connection end


//Movies start
SqlCommand inscmd = new SqlCommand();
inscmd.CommandText = "Insert into Movies (name) values(@name); select id = @@IDENTITY from Movies";
inscmd.Connection = conn;
inscmd.Parameters.Add("@name", SqlDbType.NVarChar, 250, "name");

SqlDataAdapter adapter = new SqlDataAdapter(inscmd);
adapter.InsertCommand = inscmd;
adapter.Update(Movies);
//Movies end

//SessionsCinema start
inscmd = new SqlCommand();
inscmd.CommandText = "Insert into SessionsCinema (SessionTime, movie, hall, price) values(@SessionTime, @movie, @hall, @price); select id = @@IDENTITY from SessionsCinema";
inscmd.Connection = conn;
inscmd.Parameters.Add("@SessionTime,@movie,@hall,@price", SqlDbType.NVarChar, 250, "SessionTime,movie,hall,price");

adapter = new SqlDataAdapter(inscmd);
adapter.InsertCommand = inscmd;
adapter.Update(SessionsCinema);
//SessionsCinema end

您必須仔細查看SqlParameterCollection.Add簽名。

//SessionsCinema start
            inscmd = new SqlCommand();
            inscmd.CommandText = "Insert into SessionsCinema (SessionTime, movie, hall, price) values(@SessionTime, @movie, @hall, @price); select id = @@IDENTITY from SessionsCinema";
            inscmd.Connection = conn;
            inscmd.Parameters.Add("@SessionTime, SqlDbType.NVarChar, 250).Value = SessionTime;
            inscmd.Parameters.Add("@movie", SqlDbType.NVarChar, 250).Value = movie;
            inscmd.Parameters.Add("@hall", SqlDbType.NVarChar, 250).Value = hall;
            inscmd.Parameters.Add("@price", SqlDbType.NVarChar, 250).Value = price;
            adapter = new SqlDataAdapter(inscmd);
            adapter.InsertCommand = inscmd;
            adapter.Update(SessionsCinema);
//SessionsCinema end

這行是錯誤的:

inscmd.Parameters.Add("@SessionTime,@movie,@hall,@price", SqlDbType.NVarChar, 250, "SessionTime,movie,hall,price");

您需要為該列表中的每個參數單獨調用Parameters.Add()。 它看起來應該像這樣:

inscmd.Parameters.Add("@SessionTime", SqlDbType.NVarChar, 250).Value = SessionTime;
inscmd.Parameters.Add("@movie", SqlDbType.Int).Value = movie;
inscmd.Parameters.Add("@hall", SqlDbType.Int).Value = hall;
inscmd.Parameters.Add("@price", SqlDbType.Money).Value = price;

另外,從第一個命令檢查您的參數。 看來您在這里犯了同樣的錯誤。

您的第一個命令有效,因為它只有一個參數,並且您為其定義了一個.Add方法。 沒關系。

但是您的第二個命令具有4個參數,不能僅在一個.Add方法中添加4個參數。

您需要使用SqlParameterCollection.AddWithValue添加它們;例如:

inscmd.Parameters.AddWithValue("@SessionTime, SessionTime);
inscmd.Parameters.AddWithValue("@movie", movie);
inscmd.Parameters.AddWithValue("@hall", hall);
inscmd.Parameters.AddWithValue("@price", price);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM