C#+Access 使用app.config连接数据库后不能插入和更新数据
展开全部
跟app.config无关。可能是access权限问题。
我曾经做过一个winForm小程序,你参考一下吧。
http://www.0379zd.com/news/show/5002.htm
由于winForm的bin目录总是把数据库文件一同生成,所以刚开始我以为无法修改Access
其实是可以修改的,你把程序发布后,就知道了。
下面是我的一个项目总结:
源码下载:
一直做webForm,今天有机会做一个winForm的小项目,一直用mssql,今天使用了一个Access.
有一些知识点需要总结一下。
关于Access
1.由于winForm的bin目录总是把数据库文件一同生成,所以刚开始我以为无法修改Access
2.Access的数据库连接的形式。
3.Access的加密方法,新建的时候,可以直接设置密码,如果后来想加密,需要先打开Access
然后,文件->打开->选择独占方式打开。
4.关于Access的禁用字段名问题,可以使用[字段名]来避免,我也忘了是哪个字段名。
关于SqlHelper
对于小项目,我只使用了两个方法,一个执行sql语句,一个返回DataSet,关于全部使用字符串拼接。
构造where语句的方法
if (this.txtQuerySchool.Text != "")
where += "school like '%" + txtQuerySchool.Text + "%' and ";//每个后面加and
where += "id>0";//为了接上and
winForm的一些小技巧
1.设置tabIndex,可以使用tab键快捷切换。
2.winForm关闭一个窗口与打开一个窗口
this.Hide();//这里只是隐藏,如果关闭是this.Close();
FrmMain frmMain = new FrmMain();
frmMain.Show();
3.在Load事件设置默认按钮
private void FrmLogin_Load(object sender, EventArgs e)
{
this.AcceptButton = btnLogin;
}
4.Dock属性,设置依靠,很有用。
5.tabControl的使用方法
设置tabPages
tabControl1.SelectedIndex = 3;
6.页面间传值,采用public static string AddName;
7.窗体关闭时自动退出程序
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
8.使用一个窗体做模态对话框
FrmConfirm frmConfirm = new FrmConfirm();
if (frmConfirm.ShowDialog() != DialogResult.OK)//这里只有两种选择
return;
模态对话框的退出
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
模态对话框的返回值
private void btnOk_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
DataGridView导出Excel,需要导入Com组件Microsoft Excel 11.0 Object Library
private void btnExport_Click(object sender, EventArgs e)
{
ExportDataGridView(dataGridView1, true);
}
private bool ExportDataGridView(DataGridView dgv, bool isShowExcel)
{
if (dgv.Rows.Count == 0)
return false;
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcel;
//生成字段名
for (int i = 0; i < dgv.ColumnCount; i++)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < dgv.RowCount; i++)
{
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j, i].ValueType == typeof(string))//先列后行
{
excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
}
}
}
return true;
}
我曾经做过一个winForm小程序,你参考一下吧。
http://www.0379zd.com/news/show/5002.htm
由于winForm的bin目录总是把数据库文件一同生成,所以刚开始我以为无法修改Access
其实是可以修改的,你把程序发布后,就知道了。
下面是我的一个项目总结:
源码下载:
一直做webForm,今天有机会做一个winForm的小项目,一直用mssql,今天使用了一个Access.
有一些知识点需要总结一下。
关于Access
1.由于winForm的bin目录总是把数据库文件一同生成,所以刚开始我以为无法修改Access
2.Access的数据库连接的形式。
3.Access的加密方法,新建的时候,可以直接设置密码,如果后来想加密,需要先打开Access
然后,文件->打开->选择独占方式打开。
4.关于Access的禁用字段名问题,可以使用[字段名]来避免,我也忘了是哪个字段名。
关于SqlHelper
对于小项目,我只使用了两个方法,一个执行sql语句,一个返回DataSet,关于全部使用字符串拼接。
构造where语句的方法
if (this.txtQuerySchool.Text != "")
where += "school like '%" + txtQuerySchool.Text + "%' and ";//每个后面加and
where += "id>0";//为了接上and
winForm的一些小技巧
1.设置tabIndex,可以使用tab键快捷切换。
2.winForm关闭一个窗口与打开一个窗口
this.Hide();//这里只是隐藏,如果关闭是this.Close();
FrmMain frmMain = new FrmMain();
frmMain.Show();
3.在Load事件设置默认按钮
private void FrmLogin_Load(object sender, EventArgs e)
{
this.AcceptButton = btnLogin;
}
4.Dock属性,设置依靠,很有用。
5.tabControl的使用方法
设置tabPages
tabControl1.SelectedIndex = 3;
6.页面间传值,采用public static string AddName;
7.窗体关闭时自动退出程序
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
8.使用一个窗体做模态对话框
FrmConfirm frmConfirm = new FrmConfirm();
if (frmConfirm.ShowDialog() != DialogResult.OK)//这里只有两种选择
return;
模态对话框的退出
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
模态对话框的返回值
private void btnOk_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
DataGridView导出Excel,需要导入Com组件Microsoft Excel 11.0 Object Library
private void btnExport_Click(object sender, EventArgs e)
{
ExportDataGridView(dataGridView1, true);
}
private bool ExportDataGridView(DataGridView dgv, bool isShowExcel)
{
if (dgv.Rows.Count == 0)
return false;
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcel;
//生成字段名
for (int i = 0; i < dgv.ColumnCount; i++)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < dgv.RowCount; i++)
{
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j, i].ValueType == typeof(string))//先列后行
{
excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
}
}
}
return true;
}
展开全部
winform程序保证在操作的时候,access不是别的程序独占方式打开的,如不应该在office打开access时,运行c#程序进行操作。有这个可能, 但这种情况会报错,根据错误信息很容易找到原因,如果不是这个原因,请把问题说的详细一点
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
winform程序保证在操作的时候,access不是别的程序独占方式打开的,如不应该在office打开access时,运行c#程序进行操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询