C# 通过access database 2007中的查询更新更新datagridview中的数据时出现问题?
其他时候我需要你的帮助,我正在使用Access数据库(2007)开发一个C#应用程序,我想问题是查询更新日期,我在互联网上搜索过,但没有任何效果,我有一个datagridview,它有3列,用户需要将数据放入最后2列(5行),我已经这样做了,但是当我填充datagridview中的列时,它不会将数据存储在数据库访问中。所以我需要你的帮助这是我的代码,非常感谢你的帮助C# 通过access database 2007中的查询更新更新datagridview中的数据时出现问题?,c#,ms-access,datagridview,variable-assignment,C#,Ms Access,Datagridview,Variable Assignment,其他时候我需要你的帮助,我正在使用Access数据库(2007)开发一个C#应用程序,我想问题是查询更新日期,我在互联网上搜索过,但没有任何效果,我有一个datagridview,它有3列,用户需要将数据放入最后2列(5行),我已经这样做了,但是当我填充datagridview中的列时,它不会将数据存储在数据库访问中。所以我需要你的帮助这是我的代码,非常感谢你的帮助 private void btnGuardar_Click(object sender, EventArgs e) {
private void btnGuardar_Click(object sender, EventArgs e)
{
//using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Databsename.accdb"))
//{
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Databasename.accdb;Persist Security Info=false");
int grade = 1;
string x;
string comment;
for (int i = 0; i < this.dataGridView4.Rows.Count-1; i++)
{
x = dataGridView4.Rows[i].Cells[1].Value.ToString();
//Console.WriteLine(x);
MessageBox.Show(x);
grade = int.Parse(x);
comment = dataGridView4.Rows[i].Cells[2].Value.ToString();
MessageBox.Show(comment);
OleDbCommand cmd = new OleDbCommand("Update archievemnet set grade= @GRADE comment=@COMMENT WHERE idLine =1 ", conn);
cmd.Parameters.Add(new OleDbParameter("@GRADE", OleDbType.Integer));
cmd.Parameters["@GRADE"].Value = grade;
cmd.Parameters.Add(new OleDbParameter("@comment", OleDbType.VarChar));
cmd.Parameters["@COMMENT"].Value = comment;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
//}
}
private void btnGuardar\u单击(对象发送方,事件参数e)
{
//使用(OleDbConnection conn=new-OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;数据源=Databsename.accdb”))
//{
OleDbConnection conn=新的OleDbConnection(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=Databasename.accdb;持久安全信息=false”);
int级=1;
字符串x;
字符串注释;
for(int i=0;i
这不是最好的解决方案,但您可以尝试直接在查询中提供值
OleDbCommand cmd = new OleDbCommand("UPDATE archievemnet SET " +
" grade = " + textBoxGrade.Text +
" comment = " + textBoxComment.Text +
" WHERE idLine = 1 ", conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
编辑:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Databasename.accdb;Persist Security Info=false");
int idLine;
double grade;
string comment;
for (int i = 0; i < this.dataGridView4.Rows.Count-1; i++)
{
idLine = Convert.ToInt32(dataGridView4[0, i].Value);
grade = Convert.ToDouble(dataGridView4[1, i].Value);
comment = Convert.ToString(dataGridView4[2, i].Value);
OleDbCommand cmd = new OleDbCommand("UPDATE archievemnet SET " +
" grade = " + grade +
" comment = '" + comment + "' WHERE idLine = "+ idLine, conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
OleDbConnection conn=new-OleDbConnection(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=Databasename.accdb;Persist-Security-Info=false”);
int idLine;
双级;
字符串注释;
for(int i=0;i
这不是最好的解决方案,但您可以尝试直接在查询中提供值
OleDbCommand cmd = new OleDbCommand("UPDATE archievemnet SET " +
" grade = " + textBoxGrade.Text +
" comment = " + textBoxComment.Text +
" WHERE idLine = 1 ", conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
编辑:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Databasename.accdb;Persist Security Info=false");
int idLine;
double grade;
string comment;
for (int i = 0; i < this.dataGridView4.Rows.Count-1; i++)
{
idLine = Convert.ToInt32(dataGridView4[0, i].Value);
grade = Convert.ToDouble(dataGridView4[1, i].Value);
comment = Convert.ToString(dataGridView4[2, i].Value);
OleDbCommand cmd = new OleDbCommand("UPDATE archievemnet SET " +
" grade = " + grade +
" comment = '" + comment + "' WHERE idLine = "+ idLine, conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
OleDbConnection conn=new-OleDbConnection(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=Databasename.accdb;Persist-Security-Info=false”);
int idLine;
双级;
字符串注释;
for(int i=0;i
在您的代码中有“更新存档…”。这可能是您的表名,但正确的英语单词是“成就”。检查表名的拼写是否正确。您的代码周围还应该有一个try/catch块,用于捕获Access或db连接器引发的任何异常,以及异常块中的一些日志记录。(我使用并推荐NLog。)你说你得到了一个异常,它是什么类型,消息是什么
我认为您最好在最终代码中使用参数(就像您开始做的那样),而不是像yonan2236建议的那样使用字符串浓缩-但它有时可以帮助调试。您可以尝试:
String updateStmt = "UPDATE archievemnet SET " +
" grade = " + grade +
" comment = '" + comment + "' WHERE idLine = "+ idLine;
OleDbCommand cmd = new OleDbCommand(updateStmt, conn);
字符串updateStmt=“更新档案集”+
“等级=”+等级+
“comment=”“+comment+”,其中idLine=“+idLine;
OleDbCommand cmd=新的OleDbCommand(康涅狄格州updateStmt);
并在创建命令之前停止调试器中的代码。将updateStmt的值复制到Access中,看看是否可以直接执行该语句。在代码中有“updatearchivemnet…”。这可能是您的表名,但正确的英语单词是“成就”。检查表名的拼写是否正确。您的代码周围还应该有一个try/catch块,用于捕获Access或db连接器引发的任何异常,以及异常块中的一些日志记录。(我使用并推荐NLog。)你说你得到了一个异常,它是什么类型,消息是什么
我认为您最好在最终代码中使用参数(就像您开始做的那样),而不是像yonan2236建议的那样使用字符串浓缩-但它有时可以帮助调试。您可以尝试:
String updateStmt = "UPDATE archievemnet SET " +
" grade = " + grade +
" comment = '" + comment + "' WHERE idLine = "+ idLine;
OleDbCommand cmd = new OleDbCommand(updateStmt, conn);
字符串updateStmt=“更新档案集”+
“等级=”+等级+
“comment=”“+comment+”,其中idLine=“+idLine;
OleDbCommand cmd=新的OleDbCommand(康涅狄格州updateStmt);
并在创建命令之前停止调试器中的代码。将updateStmt的值复制到Access中,看看是否可以直接执行该语句。您的UPDATE语句需要在comment=之前加一个逗号。 请看这个在我的系统上运行的示例:
UPDATE tblFoo AS f SET f.parent_id = 99, f.foo_text = "updated"
WHERE (((f.id)=10));
99后面没有逗号…:
UPDATE tblFoo AS f SET f.parent_id = 99 f.foo_text = "updated"
WHERE (((f.id)=10));
。。。访问投诉:
查询表达式“99 f.foo_text=“updated”中出现语法错误(缺少运算符)。Y