簡體   English   中英

為什么它不起作用(C#中的SQL命令?

[英]Why doesn't it work (SQL command in C#?

我想問你為什么這段代碼不起作用? 它沒有任何錯誤,甚至cmd.ExecuteNonQuery(); 返回1(如果更改數據庫中的一行,是它),但在實際數據庫中,絕對沒有變化。 使用其他數據庫表,這段代碼可以正常工作,但是我也無法從這個表中刪除一行 - 如果它是“只讀”的話它會表現得如此,但我不明白為什么 - 昨天,一切正常,現在,它突然停止工作:-(

string sConnectionString;

                sConnectionString = "Data Source=.\\SQLEXPRESS; AttachDbFilename=\"" + zdielaneInfo.Adresar + "\\rozvrh.mdf\";";
                sConnectionString += "Integrated Security=True;User Instance=True";
                SqlConnection objConn
                    = new SqlConnection(sConnectionString);
                objConn.Open();



                SqlCommand cmd = new SqlCommand("", objConn);
                if (zdielaneInfo.Edit)

                    cmd.CommandText = "UPDATE subject " +
                                        "SET name = @name, day = @day, timeStart = @timeStart, timeEnd = @timeEnd "
                                        + "WHERE id = @id";
                else
                    cmd.CommandText = "INSERT INTO subject (name, day, timeStart, timeEnd) " +
                                         "Values (@name, @day, @timeStart, @timeEnd)";
                cmd.Parameters.Add(new SqlParameter("@name", txbName.Text));
                cmd.Parameters.Add(new SqlParameter("@day", dniNaInt(cbDen.Text)));
                cmd.Parameters.Add(new SqlParameter("@timeStart", DateTime.Parse(txbStart.Text)));
                cmd.Parameters.Add(new SqlParameter("@timeEnd", DateTime.Parse(txbEnd.Text)));
                cmd.Parameters.Add(new SqlParameter("@id", zdielaneInfo.Id));
                cmd.ExecuteNonQuery();
                objConn.Close();

也許桌子被鎖了。

這里 ,試試這個:

select  
    object_name(P.object_id) as TableName, 
    resource_type, resource_description
from
    sys.dm_tran_locks L
    join sys.partitions P on L.resource_associated_entity_id = p.hobt_id

如果您的表在結果集中,那么您就得到了答案。


另一種可能性是您正在使用的用戶。 也許他的特權被撤銷了。

您的問題看起來像mdf文件覆蓋問題。

您正在訪問放在調試文件夾中的mdf文件,並在每次運行應用程序時替換。

確保在您的項目中,如果您的解決方案中附有數據庫而您沒有覆蓋它。 因此,在解決方案資源管理器中選擇mdf文件,並確保其“復制到輸出”設置為“不復制”,然后手動將mdf文件復制到project \\ bin \\ debug文件夾,然后運行該應用程序。

希望能幫助到你。

使用用戶實例/ attachdbfilename選項停止( 不推薦使用用戶實例 !)。 在真實的SQL Server上創建數據庫,然后使用您的連接字符串直接連接到它。 使用這個不推薦使用的功能意味着每次啟動程序時都會從數據庫的副本開始,昨天插入的內容不再存在 - 如果使用來自兩個不同應用程序的連接字符串連接到數據庫,人們不會看到另一個正在改變的數據。

暫無
暫無

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

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