好的,我的數據庫沒有更新,最近幾天我一直有問題。我可以讀取數據,我也沒有收到任何例外。我試圖更新數據庫,然後嘗試在更新後(在同一次運行期間)再次讀取值,並且它們仍保留原始值,所以它似乎不是數據庫被複制到另一個文件夾時的問題(我使用複製如果更新,但沒有數據庫正在更新)。C#和SQLCE數據庫沒有更新
這是我正在使用的代碼。正如你所看到的,我嘗試了幾種不同的方法,其中沒有一個能夠工作。
public void UpdateDatabaseInStock(string itemName, string tableName)
{
DataSet data = new DataSet("Items");
int val;
//get the file path to the database as a string
string dbfile =
new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName +
"\\Database\\GameData.sdf";
//connect to the database
using (SqlCeConnection cntn = new SqlCeConnection("datasource=" + dbfile))
{
//create an adapter to pull all data from the table
using (SqlCeDataAdapter adpt = new SqlCeDataAdapter
("SELECT * FROM " + tableName + " WHERE Name LIKE '%" + itemName + "%'", cntn))
{
//put the data into a DataSet
adpt.Fill(data);
cntn.Close();
}
//fill the data from the Items table into a DataTable to return.
DataTable itemTable = data.Tables[0];
DataRow a = itemTable.Rows[0];
val = (short)a.ItemArray[3] - 1;
dbfile = "";
data.Dispose();
itemTable.Dispose();
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = cntn;
cntn.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE " + tableName + " SET [In Stock] = @Value WHERE [Name] = '@ItemName'";
//cmd.Parameters.Add("@Value", SqlDbType.SmallInt);
//cmd.Parameters["@Value"].Value = val;
//cmd.Parameters.Add("@ItemName", SqlDbType.NChar, 75);
//cmd.Parameters["@ItemName"].Value = itemName;
cmd.Parameters.AddWithValue("@Value", val);
cmd.Parameters.AddWithValue("@ItemName", itemName);
cmd.ExecuteNonQuery();
//close the conenction
cntn.Close();
cmd.Dispose();
}
}
任何想法讓它實際更新?
您是否嘗試過在數據庫中檢查更新是否進行? –
似乎根本沒有進行。每次我查看實際數據庫中的值或者使用代碼將它們拉入時,它們都具有相同的起始值。 –
什麼樣的數據類型是你的名字列,你傳遞了一個確切的'itemName'?你的where子句在你的'select'和你的'update'之間有所不同,這不一定是壞的,但是你可能比'[Name] ='@'LIKE'%「+ itemName +」%'「 ItemName''。 – cmcquillan