C# datagridview 中修改数据保存到数据库出问题
namespacetestdatagridview{publicpartialclassForm1:Form{publicForm1(){InitializeCompon...
namespace testdatagridview
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlDataAdapter adapter = null;
DataSet ds = new DataSet();
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder sb = new SqlCommandBuilder(adapter);
adapter.Update(ds.Tables[0]);
//adapter.Update(ds);
}
catch (Exception ex){ MessageBox.Show(ex.ToString()); }
}
private void Form1_Load(object sender, EventArgs e)
{
string commandText = "select * from productinfo";
string connectionString = "server=localhost;database=master;uid=sa;pwd=sa";
SqlConnection mySqlConnection = new SqlConnection(connectionString);
//mySqlConnection.Open();
adapter = new SqlDataAdapter(commandText, connectionString);
adapter.Fill(ds, "productinfo");
this.dataGridView1.DataSource = ds.Tables[0];
}
}
}
以上是我的代码,可以运行,且能插入新的一行,并保存。但在原来的项中修改却出错。 展开
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlDataAdapter adapter = null;
DataSet ds = new DataSet();
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder sb = new SqlCommandBuilder(adapter);
adapter.Update(ds.Tables[0]);
//adapter.Update(ds);
}
catch (Exception ex){ MessageBox.Show(ex.ToString()); }
}
private void Form1_Load(object sender, EventArgs e)
{
string commandText = "select * from productinfo";
string connectionString = "server=localhost;database=master;uid=sa;pwd=sa";
SqlConnection mySqlConnection = new SqlConnection(connectionString);
//mySqlConnection.Open();
adapter = new SqlDataAdapter(commandText, connectionString);
adapter.Fill(ds, "productinfo");
this.dataGridView1.DataSource = ds.Tables[0];
}
}
}
以上是我的代码,可以运行,且能插入新的一行,并保存。但在原来的项中修改却出错。 展开
5个回答
展开全部
mysql = new SqlDataAdapter("Select * from xs", conn);
mysql.Fill(myTable);
dataGrid1.DataSource = myTable;
cmOrders = (CurrencyManager)BindingContext[myTable];
cb = new SqlCommandBuilder(mysql);//有这条才能使用更新命令.表中必须有主键..
更新的代码
cmOrders.EndCurrentEdit();
if (myTable.GetChanges() != null)
{
try
{
mysql.Update(myTable);
MessageBox.Show("数据保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception express)
{
MessageBox.Show(express.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
myTable.RejectChanges();
}
}
注:声明~~~~`````
private static DataTable myTable;
private CurrencyManager cmOrders;
SqlDataAdapter mysql;
private SqlCommandBuilder cb;
mysql.Fill(myTable);
dataGrid1.DataSource = myTable;
cmOrders = (CurrencyManager)BindingContext[myTable];
cb = new SqlCommandBuilder(mysql);//有这条才能使用更新命令.表中必须有主键..
更新的代码
cmOrders.EndCurrentEdit();
if (myTable.GetChanges() != null)
{
try
{
mysql.Update(myTable);
MessageBox.Show("数据保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception express)
{
MessageBox.Show(express.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
myTable.RejectChanges();
}
}
注:声明~~~~`````
private static DataTable myTable;
private CurrencyManager cmOrders;
SqlDataAdapter mysql;
private SqlCommandBuilder cb;
展开全部
和我遇到的问题一样- -
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
我的出的是这个错误
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
我的出的是这个错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能给出错误的截图吗?
更多追问追答
追问
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
我的出的是这个错误
追答
SqlDataAdapter adapter =new SqlDataAdapter(sql,connectionstr) 加上2个参数 sql语句和数据库链接语句 在修改的地方
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改是需要设置主键的吧,我一般用工具类,好长时间没涉及到下面的数据访问了,记不清了
追问
把表中某个字段设为主键,我也试过。还是同样的问题
追答
这个还是查一下书吧,具体的记不清了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改时出现什么错误提示呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询