| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2043 人关注过本帖
标题:[求助]VS2005的数据库问题,和用installshield打包应用程序问题.
取消只看楼主 加入收藏
dirandy001
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-18
收藏
 问题点数:0 回复次数:1 
[求助]VS2005的数据库问题,和用installshield打包应用程序问题.

图片附件: 游客没有浏览图片的权限,请 登录注册

以上是我的基本测试数据库程序.
我来解说一下:
上面两个框是textbox1,2,是读取数据库的内容,在读取一条数据显示在1,2可,在1,2框修改值,再按SAVE键可修改数据库;Delete键是删除1,2框显示的那条数据;
下面是框3,4.从中输入新值,按ADD键可增加一条新数据;
以下是代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace DataBase_Example
{
public partial class frmMain : Form
{
//连接ACCSEE数据库
OleDbConnection m_cn = new OleDbConnection();
OleDbDataAdapter m_ad;
OleDbCommandBuilder m_cb;
DataTable m_dt = new DataTable();
int m_row = 0;
public frmMain()
{
InitializeComponent();
}

private void frmMain_Load(object sender, EventArgs e)
{
m_cn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\text.mdb";
m_cn.Open();
m_ad = new OleDbDataAdapter("select * From dd", m_cn);

//??这句我不懂
m_cb = new OleDbCommandBuilder(m_ad);

m_ad.Fill(m_dt);
this.ShowCurrentRecord();
}
//关后解放内存
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
m_cn.Close();
m_cn.Dispose();
}

//这个叫类还是叫方法了?(-_-b)
private void ShowCurrentRecord()
{
if (m_dt.Rows.Count == 0)
{
textBox1.Text = "";
textBox2.Text = "";
return;
}
textBox1.Text =
m_dt.Rows[m_row]["name"].ToString();
textBox2.Text =
m_dt.Rows[m_row]["age"].ToString();
}


private void btnMoveFirst_Click(object sender, EventArgs e)
{
m_row = 0;
this.ShowCurrentRecord();
}

private void btnMoveNext_Click(object sender, EventArgs e)
{
if (m_row != 0)
{
m_row--;
this.ShowCurrentRecord();
}

}

private void btnMoveNext_Click_1(object sender, EventArgs e)
{
if (m_row < m_dt.Rows.Count - 1)
{
m_row++;
this.ShowCurrentRecord();
}
}

private void btnMoveLast_Click(object sender, EventArgs e)
{
if (m_dt.Rows.Count != 0)
{
m_row = m_dt.Rows.Count - 1;
this.ShowCurrentRecord();
}
}

private void btnSave_Click(object sender, EventArgs e)
{
if (m_dt.Rows.Count != 0)
{
m_dt.Rows[m_row]["name"] = textBox1.Text;
m_dt.Rows[m_row]["age"] = Convert.ToInt32(textBox2.Text);
m_ad.Update(m_dt);
m_dt.AcceptChanges();
}
}

private void btnAdd_Click(object sender, EventArgs e)
{
DataRow drN = m_dt.NewRow();
drN["name"] = textBox3.Text;
drN["age"] = Convert.ToInt32(textBox4.Text);
//写入datatable
m_dt.Rows.Add(drN);
m_ad.Update(m_dt);
m_dt.AcceptChanges();
m_row = m_dt.Rows.Count - 1;
this.ShowCurrentRecord();
}

private void btnDelete_Click(object sender, EventArgs e)
{
if (m_dt.Rows.Count != 0)
{
m_dt.Rows[m_row].Delete();
m_ad.Update(m_dt);
m_dt.AcceptChanges();
m_row = 0;
this.ShowCurrentRecord();
}
}
}
}
以上!问题是这样:
1,按Add键:数据库中加入一条数据txt1.text和txt2.text (OK)
2,按Delete:删除一条数据,以m_row为索引 (OK)
3,先按Add,加了一条新数据,再按Delete(出异常)
4, 先按Add,在textbox1,2改改值,再按Save(出异常)
异常为:违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。
..所以。。请教?

另外:是关于C#Winform打包的问题.
大家都知道目前绝大部分WINDOWS是NO~~.net库的(不知道Vista怎么样).所以我们打包程序非得把.net也包进去(那个郁闷我就不说了,目前也没啥好办法.谁叫咱是学C#的呢,只好坚挺地上了,兄弟们说是不?)."天使不哭"大大的那篇文章我看了,在这先感谢一下!不过我听说用那种方法打包的话,可以是可以,不过客户安装的时候会问"要不要装.net?"这句白痴话(听说的!听说!不要BS我),这样就不太好了对吧.
有什么方法可以在测到客户机没有.net的情况下,神不知鬼不觉地把.net坚挺进去?
所以我看上了installshield这个第三方软件..
问题来了:俺不会用.
听说要把.net装上去还要编个代码..俺也不会..
各位C#的兄弟姐妹,谁有这个经验的手把手教我一下?(网上也有很多我这样的小可怜在问这问题.可大部分回答的人都是五行欠扁.废话一堆,关键的泡泡没冒出一个,心那个寒哇~)
祝各位:男的日日坚挺!女的日日放电!以上!

搜索更多相关主题的帖子: using 数据库 应用程序 System 打包 
2007-11-19 10:30
dirandy001
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-18
收藏
得分:0 
晕.我的贴子居然被刷了一下.

2007-11-20 08:29
快速回复:[求助]VS2005的数据库问题,和用installshield打包应用程序问题.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.078465 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved