我嘗試更新sqldatabase服務器。我之前在visual studio中使用buildin「Local Database」做了這個。乙 我這樣做(簡稱)C#SQL Server更新
System.Data.SqlServerCe.SqlCeCommandBuilder cb;
cb = new System.Data.SqlServerCe.SqlCeCommandBuilder(da);
cb.DataAdapter.Update(ds1, "Alarmen");
但內置的數據庫沒有達到要求。我不得不使用Microsoft SQL Server 2005. 我也嘗試過這樣做,但那不起作用。 首先我填一個數據庫中使用以下命令設置數據庫:\
fillDataSet()
{
SqlConnection _con = new SqlConnection("server=(local)\\SQLExpress;database=Alarmen;integrated Security=SSPI;");
string sql = "SELECT * FROM tbl_alarmen";
try
{
_con.Open();
}
catch (Exception ex)
{
log.Info("Database kon niet geopend worden " + ex);
}
DataSet ds1 = new DataSet();
try
{
sql = "SELECT * FROM dbo.tbl_alarmen";
_cmd = new SqlCommand(sql, _con);
_dap = new SqlDataAdapter(_cmd);
_dap.Fill(ds1, "Alarmen");
foreach (DataRow drow in ds1.Tables["Alarmen"].Rows)
{
log.Info("Test");
}
}
catch (Exception err)
{
log.Info("Database lezen mislukt " + err);
}
try
{
_con.Close();
}
catch (Exception ex)
{
log.Info("Database sluiten mislukt " + ex);
}
_dap.Fill(ds1, "Alarmen");
foreach (DataRow drow in ds1.Tables["Alarmen"].Rows)
{
log.Info("Test");
}
}
catch (Exception err)
{
log.Info("Database lezen mislukt " + err);
}
try
{
_con.Close();
}
catch (Exception ex)
{
log.Info("Database sluiten mislukt " + ex);
}
}
然後我添加行和修改數據集中的項目,並嘗試OP更新數據庫的變化。
UpdateDatabase()
{
SqlConnection _con = new SqlConnection("server=(local)\\SQLExpress;database=Alarmen;integrated Security=SSPI;");
string sql = "SELECT * FROM tbl_alarmen";
try
{
_con.Open();
}
catch (Exception ex)
{
log.Info("Database kon niet geopend worden " + ex);
}
try
{
var con = new SqlConnection(connectionString);
var adapter = new SqlDataAdapter("SELECT * FROM tbl_alarmen", con);
new SqlCommandBuilder(adapter);
//
// Fill the DataAdapter with the values in the DataTable.
//
adapter.Fill(ds1);
//
// Insert the data table into the SQL database.
//
adapter.Update(ds1);
}
catch (Exception e)
{
log.Info("Fill database failed " + e);
}
try
{
_con.Close();
}
catch (Exception ex)
{
log.Info("Database sluiten mislukt " + ex);
}
}
我沒有收到任何錯誤,但數據庫一直爲空。
我現在不應該使用「SELECT *」來解決安全問題。我需要在將來改變這一點。
我看到我沒有問一個真正的問題。我在代碼中做了什麼錯誤,我該如何修復它。
好了,第一反模式我在代碼中看到的是,打開時如果有異常拋出連接,你報告錯誤,然後**繼續**嘗試使用連接。 –
感謝您的意見。這是我可以使用的東西。但我使用try-catch主體來查看是否有錯誤。問題是錯誤不是trown。所以我認爲他們不會給出任何錯誤。 – Gulpener
另外,考慮在打開一個'SqlConnection'時考慮使用'using'子句,以便在發生問題時更輕鬆地處理連接。看到這個[教程](http://www.dotnetperls.com/sqlconnection)。 此外,您使用'try/catch'塊只記錄異常信息而不做其他事情。這不是一個好的做法 - 只有在你打算做一些事情(例如回滾)時纔會發現異常。更好,更乾淨的方法是使用'AppDomain.UnhandledException'。例如:[link](http://stackoverflow.com/questions/3133199/net-global-exception-handler-in-console-application)。 – w128