作者mosluce ()
看板C_Sharp
标题[问题] DataSet、DataTableAdapter 回存资料库
时间Thu Nov 18 10:46:56 2010
开发环境:C# 2010
资料库:SQLite (SQLite.Net)
问题在制作可增、删、改的DataGridView遇到
以下次程式码片段
宣告&初始
SQLiteConnectionStringBuilder connBuilder;
SQLiteConnection conn;
SQLiteDataAdapter adapter;
DataSet ds;
private void SettingUserManage_Load(object sender, EventArgs e)
{
SQLiteCommand cmd = new SQLiteCommand();
ds = new DataSet();
connBuilder = new SQLiteConnectionStringBuilder();
connBuilder.DataSource = "Data/database.db3";
conn = new SQLiteConnection(connBuilder.ToString());
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Users";
cmd.CommandType = CommandType.Text;
adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(ds, "Users");
usersGridView.DataSource = ds.Tables["Users"];
}
问题
private void userGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{/*当编辑结束时*/
SQLiteCommand cmd = new SQLiteCommand();
/*取得编辑资料行*/
DataGridViewRow row = usersGridView.Rows[e.RowIndex];
string uid = row.Cells["UserID"].Value.ToString();
string pass = row.Cells["Password"].Value.ToString();
string name = row.Cells["UserCName"].Value.ToString();
bool admin = (bool)row.Cells["IsAdmin"].Value;
/*以下试图使用Adapter的Update功能才回存*/
/*注解部分为成功的方法1*/
/*根据查询到的资料实作方法2,无法写回资料库*/
//conn.Open(); //--方法1
cmd.Connection = conn;
cmd.CommandText = String.Format("UPDATE Users SET Password='{0}', UserCName='{1}', IsAdmin='{2}' WHERE UserID='{3}'", pass, name, admin, uid);
//cmd.ExecuteNonQuery(); //--方法1
//conn.Close(); //--方法1
//MessageBox.Show(adapter.AcceptChangesDuringUpdate.ToString());
adapter.UpdateCommand = cmd; //--方法2
adapter.Update(ds.Tables["Users"]); //--方法2
ds.AcceptChanges(); //--方法2
}
麻烦高手解惑~THANKS MUCH MUCH
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.85.58.90
※ 编辑: mosluce 来自: 219.85.58.90 (11/18 10:55)
1F:推 horngsh:你有把Users资料表建立主键吗? 11/18 12:23
2F:推 Deadshot465:你的DataAdapter与DataSet的用法可能不太对 11/18 12:24
4F:→ Deadshot465:UpdateCommand似乎要用参数来设定 并且参数值要是 11/18 12:25
5F:→ Deadshot465:资料行的名称 此外你取得的更新资料好像也没先写入 11/18 12:26
6F:→ Deadshot465:ds.Tables["Users"]中 11/18 12:27
7F:→ mosluce:回horngsh:有建立 primary key 11/18 13:04
8F:→ mosluce:@Deadshot:研究一下^^,感谢提供资料~ 11/18 13:05
9F:推 horngsh:楼主,D大说得是对的. 11/18 14:17
10F:→ mosluce:SQLite.NET 用法上似乎不太一样... 继续研究 11/18 16:20