现象:以下是我更新数据库使用的方法,目前现象是我没次改完后只能保存在内存里,不能真的更新数据库,当程序重新编译启动后原先的添加的数据又没了。注释:1.this.lbUser.Items.Count是我给数据库主键NameID设的值,以下都是这样,类型方面没有错;2."User"是一个用户表;3.da是OleDbDataAdapter类型的,已经和数据库相连。DataSet ds = new DataSet();
this.da.Fill(ds, "User");
DataTable dt = ds.Tables["User"];
DataRow dr = dt.NewRow();
dr["NameID"] = this.lbUser.Items.Count;
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
dt.Rows.Add(dr);
da.Update(ds, "User");
this.da.Fill(ds, "User");
DataTable dt = ds.Tables["User"];
DataRow dr = dt.NewRow();
dr["NameID"] = this.lbUser.Items.Count;
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
dt.Rows.Add(dr);
da.Update(ds, "User");
解决方案 »
- 如何高效遍历两个DataTable中相同的列?
- C# 串口读取数据,现在有时间会出现乱码,乱码出现时间不固定,也不规律,是什么问题啊.....郁闷中!
- 关于窗体与XML的保存于读取
- int middle = (first + last) >> 1;
- C#能在项目下建立子项目吗?就是说,C#能否在.net开发环境下的解决方案下建立某个已有项目的子项目吗。注意不是子项,而是子项目。
- [求]联通短信网关SGIP 1.2的C#免费开发库
- 如何在c#中调用c语言中函数,第三方提供了 ipay.h ipay.lib
- 初学socket通信,一段代码不懂
- 关于SerialPort类,超级棘手的问题,在线等。估计是.net的大BUG了
- 关于数据库连接问题!
- 用DataSet更新数据库失败
- datagridview顯示問題
dt.Rows.Add(dr);
da.Update(ds, "User");
相应的,如果要执行Update方法,就必须配置好UpdateCommand
//必须要这句,才能用da.Update
OleDbCommandBuilder cb=new OleDbCommandBuilder(da);
UPDATE [User]
SET NameID = ?, Name = ?, WorkAddress = ?, BrithAddress = ?, BrithTime = ?, Marriage = ?
WHERE (NameID = ?) AND (? = 1 AND Name IS NULL OR
Name = ?) AND (? = 1 AND WorkAddress IS NULL OR
WorkAddress = ?) AND (? = 1 AND BrithAddress IS NULL OR
BrithAddress = ?) AND (? = 1 AND BrithTime IS NULL OR
BrithTime = ?) AND (? = 1 AND Marriage IS NULL OR
Marriage = ?)
这个好像没什么
OleDbDataAdapter da=new OleDbDataAdapter("Select * From Authors",conn);
OleDbCommandBuilder cb=new OleDbCommandBuilder(da); //必须要这句,才能用da.Update
DataSet ds=new DataSet();
da.Fill(ds);
ds.Tables[0].Rows[0][1]="Change Data";
da.Update(ds);
da.Update(ds)和da.Update(dt)都没用
da.AcceptedChanged();
OleDbCommandBuilder cb=new OleDbCommandBuilder(da); da.Update(ds, "User");
代码中的OleDbDataAdapter da的select,updata等都已经设置过没有问题,其次有人说加条OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM User", oleDbConnection1);我已经试过了,不对,应为我加界面设计时添加了其中的查找方法,如果在这样赋值的话,在da里只有select,其他均为空using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace Address_Text
{
public partial class Form1 : Form
{
private DataSet ds;
private DataTable dt;
bool newFlag = false; public Form1()
{
InitializeComponent();
this.oleDbConnection1.Open();
//OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM User", oleDbConnection1);
ds = new DataSet();
this.da.Fill(ds, "User");
dt = ds.Tables["User"];
} private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
} private void Form1_Load(object sender, EventArgs e)
{
if (this.oleDbConnection1.State == ConnectionState.Closed)
{
oleDbConnection1.Open();
}
int iRowCount = ds.Tables["User"].Rows.Count;
this.lbUser.Items.Clear();
if (iRowCount > 0)
{
for (int i = 0; i < iRowCount; i++)
{
DataRow dr = dt.Rows[i];
string name = (string)dr[1].ToString();
this.lbUser.Items.Add(name);
}
}
oleDbConnection1.Close();
} private void lbUser_SelectedIndexChanged(object sender, EventArgs e)
{
this.tbUser.Clear();
this.tbWorkAddress.Clear();
this.tbBirthAddress.Clear();
this.tbBirthTime.Clear();
this.cbMarriage.Checked = false;
if (this.lbUser.Items.Count > 0)
{
DataRow dr = dt.Rows[this.lbUser.SelectedIndex];
this.tbUser.Text = (string)dr["Name"].ToString();
this.tbWorkAddress.Text = (string)dr["WorkAddress"].ToString();
this.tbBirthAddress.Text = (string)dr["BrithAddress"].ToString();
this.tbBirthTime.Text = (string)dr["BrithTime"].ToString();
this.cbMarriage.Checked = (bool)dr["Marriage"];
}
} private void btChange_Click(object sender, EventArgs e)
{
this.tbBirthAddress.ReadOnly = false;
this.tbBirthTime.ReadOnly = false;
this.tbUser.ReadOnly = false;
this.tbWorkAddress.ReadOnly = false;
} private void btAdd_Click(object sender, EventArgs e)
{
this.tbBirthAddress.ReadOnly = false;
this.tbBirthAddress.Clear();
this.tbBirthTime.ReadOnly = false;
this.tbBirthTime.Clear();
this.tbUser.ReadOnly = false;
this.tbUser.Clear();
this.tbWorkAddress.ReadOnly = false;
this.tbWorkAddress.Clear();
newFlag = true;
} private void btSave_Click(object sender, EventArgs e)
{
if (newFlag)
{
if (this.oleDbConnection1.State == ConnectionState.Closed)
{
oleDbConnection1.Open();
}
DataRow dr = dt.NewRow();
dr["NameID"] = this.lbUser.Items.Count;
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
dt.Rows.Add(dr);
//OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM User", oleDbConnection1);
OleDbCommandBuilder cbs = new OleDbCommandBuilder(da);
//ds.AcceptChanges();
int errorNum = da.Update(ds, "User");
if (errorNum == 1)
{
MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("添加失败,请检查", "提示", MessageBoxButtons.OK);
}
//da.Fill(ds);
this.lbUser.Items.Add(this.tbUser.Text);
}
else
{
if (this.oleDbConnection1.State == ConnectionState.Closed)
{
oleDbConnection1.Open();
}
int userSelect = this.lbUser.SelectedIndex;
DataRow dr = dt.Rows[userSelect];
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
ds.AcceptChanges();
da.Update(ds, "User");
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace Address_Text
{
public partial class Form1 : Form
{
private DataSet ds;
private DataTable dt;
bool newFlag = false; public Form1()
{
InitializeComponent();
this.oleDbConnection1.Open();
//OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM User", oleDbConnection1);
ds = new DataSet();
this.da.Fill(ds, "User");
dt = ds.Tables["User"];
} private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
} private void Form1_Load(object sender, EventArgs e)
{
if (this.oleDbConnection1.State == ConnectionState.Closed)
{
oleDbConnection1.Open();
}
int iRowCount = ds.Tables["User"].Rows.Count;
this.lbUser.Items.Clear();
if (iRowCount > 0)
{
for (int i = 0; i < iRowCount; i++)
{
DataRow dr = dt.Rows[i];
string name = (string)dr[1].ToString();
this.lbUser.Items.Add(name);
}
}
oleDbConnection1.Close();
} private void lbUser_SelectedIndexChanged(object sender, EventArgs e)
{
this.tbUser.Clear();
this.tbWorkAddress.Clear();
this.tbBirthAddress.Clear();
this.tbBirthTime.Clear();
this.cbMarriage.Checked = false;
if (this.lbUser.Items.Count > 0)
{
DataRow dr = dt.Rows[this.lbUser.SelectedIndex];
this.tbUser.Text = (string)dr["Name"].ToString();
this.tbWorkAddress.Text = (string)dr["WorkAddress"].ToString();
this.tbBirthAddress.Text = (string)dr["BrithAddress"].ToString();
this.tbBirthTime.Text = (string)dr["BrithTime"].ToString();
this.cbMarriage.Checked = (bool)dr["Marriage"];
}
} private void btChange_Click(object sender, EventArgs e)
{
this.tbBirthAddress.ReadOnly = false;
this.tbBirthTime.ReadOnly = false;
this.tbUser.ReadOnly = false;
this.tbWorkAddress.ReadOnly = false;
} private void btAdd_Click(object sender, EventArgs e)
{
this.tbBirthAddress.ReadOnly = false;
this.tbBirthAddress.Clear();
this.tbBirthTime.ReadOnly = false;
this.tbBirthTime.Clear();
this.tbUser.ReadOnly = false;
this.tbUser.Clear();
this.tbWorkAddress.ReadOnly = false;
this.tbWorkAddress.Clear();
newFlag = true;
} private void btSave_Click(object sender, EventArgs e)
{
if (newFlag)
{
if (this.oleDbConnection1.State == ConnectionState.Closed)
{
oleDbConnection1.Open();
}
DataRow dr = dt.NewRow();
dr["NameID"] = this.lbUser.Items.Count;
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
dt.Rows.Add(dr);
//OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM User", oleDbConnection1);
OleDbCommandBuilder cbs = new OleDbCommandBuilder(da);
//ds.AcceptChanges();
int errorNum = da.Update(ds, "User");
if (errorNum == 1)
{
MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("添加失败,请检查", "提示", MessageBoxButtons.OK);
}
//da.Fill(ds);
this.lbUser.Items.Add(this.tbUser.Text);
}
else
{
if (this.oleDbConnection1.State == ConnectionState.Closed)
{
oleDbConnection1.Open();
}
int userSelect = this.lbUser.SelectedIndex;
DataRow dr = dt.Rows[userSelect];
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
ds.AcceptChanges();
da.Update(ds, "User");
}
}
}
}
da=new OleDbDataAdapter("select * from tableName",conn);////
this.da.Fill(ds, "User");
DataTable dt = ds.Tables["User"];
DataRow dr = dt.NewRow();
dr.BeginEdit();///////////
dr["NameID"] = this.lbUser.Items.Count;
dr["BrithAddress"] = this.tbBirthAddress.Text;
dr["BrithTime"] = this.tbBirthTime.Text;
dr["Name"] = this.tbUser.Text;
dr["WorkAddress"] = this.tbWorkAddress.Text;
dr["Marriage"] = this.cbMarriage.Checked;
dr.EndEdit();//////////
dt.Rows.Add(dr);
OleDbCommandBuilder cb=new OleDbCommandBuilder(da);////////////
da.Update(ds, "User"); 这样应可以的