以下是我所做的完整代碼。所以基本上我創建了一個DataTable
,然後我將我的DataTable
連接到一個數據庫。我可以通過ID編輯人員,但我不知道如何通過ID刪除人員。我想要刪除整行。如何通過ID從數據表和數據庫中刪除行
而且,在我編輯DataTable
,如果我選擇不編輯表中的一部分,我得到一些空引用錯誤不設置到對象的實例
對象引用。
我的代碼:
/*
* Creating DataTable
*/
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Vards", typeof(string)));
dt.Columns.Add(new DataColumn("Uzvards", typeof(string)));
/*
* Connecting to DataBase
*/
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"datubaze.accdb\"";
OleDbConnection con = new OleDbConnection(ConnectionString);
OleDbCommand cmd = new OleDbCommand("SELECT * FROM PERSONA", con);
con.Open();
OleDbDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
DataRow dr = dt.NewRow();
dr["ID"] = dataReader["ID"];
dr["Vards"] = dataReader["Vards"];
dr["Uzvards"] = dataReader["Uzvards"];
dt.Rows.Add(dr);
}
con.Close();
dt.AcceptChanges();
PrintDataTable(dt);
Console.WriteLine();
/* Edit Person in DataTable */
Console.WriteLine("Kuru ID vēlaties labot?");
int labosana = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Vai tiešām vēlaties labot šo ierakstu?");
string vaiLabot = Console.ReadLine();
if (vaiLabot == "yes")
{
Console.WriteLine("Ievadiet jauno vārdu:");
string vards = Console.ReadLine();
Console.WriteLine("Ievadiet jauno uzvārdu:");
string uzvards = Console.ReadLine();
dt.Rows[labosana-1]["Vards"] = vards;
dt.Rows[labosana-1]["Uzvards"] = uzvards;
}
else
{
Console.WriteLine("Jūs atteicāties labot!");
}
/*
* Adding Edited Person to Database
*/
OleDbCommand upCmd = new OleDbCommand("UPDATE PERSONA SET Vards=?,Uzvards=? WHERE ID=?", con);
upCmd.Parameters.Add(new OleDbParameter("@Vards",OleDbType.VarChar));
upCmd.Parameters.Add(new OleDbParameter("@Uzvards", OleDbType.VarChar));
upCmd.Parameters.Add(new OleDbParameter("@ID", OleDbType.Integer));
foreach(DataRow dro in dt.GetChanges().Rows)
{
if (dro.RowState == DataRowState.Modified)
{
upCmd.Parameters[0].Value = dro[1];
upCmd.Parameters[1].Value = dro[2];
upCmd.Parameters[2].Value = dro[0];
con.Open();
upCmd.ExecuteNonQuery();
con.Close();
}
}
我試過一噸的代碼。但他們似乎都沒有工作。嘗試這樣的名稱刪除。
for(int i = dt.Rows.Count-1; i >= 0; i--)
{
DataRow dr = dt.Rows[i];
if (dr["Vards"] == "Name")
dr.Delete();
}
我得到錯誤在t他的第一個案例:可能意外的參考比較;爲了得到一個值的比較,左手邊輸入'string'' /在第二個,我不想使用LINQ,因爲我還不知道它 –
更新了答案。我希望這會對你有用! –