| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2043 人关注过本帖
标题:[求助]VS2005的数据库问题,和用installshield打包应用程序问题.
只看楼主 加入收藏
dirandy001
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-18
收藏
 问题点数:0 回复次数:3 
[求助]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
farderce
Rank: 1
来 自:上海
等 级:新手上路
帖 子:146
专家分:3
注 册:2006-1-11
收藏
得分:0 
System.Diagnostics.Process.start("D:a.wav");
在一个button上调用鼠标移上事件然后触发上面那句
我不想让它弹出播放器,怎,么做哦 (C#)
2007-11-19 10:53
dirandy001
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-18
收藏
得分:0 
晕.我的贴子居然被刷了一下.

2007-11-20 08:29
火柴RC
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-22
收藏
得分:0 
我现在在学着用NSIS打包

也可以检测是否安装.NET FW

由于忙着CET6,我也没试过

以下是判断用的脚本:

程序代码:
 
; IsDotNETInstalled 
; 
; 用法: 
; Call IsDotNETInstalled 
; Pop $0 
; StrCmp $0 1   

Function IsDotNETInstalled 
Push $0 
Push $1 
Push $2 
Push $3 
Push $4 
ReadRegStr $4 HKEY_LOCAL_MACHINE \ 
"Software\Microsoft\.NETFramework" "InstallRoot" 
# 移除退格键 
Push $4 
Exch $EXEDIR 
Exch $EXEDIR 
Pop $4 
# 如果根目录不存在则 .NET 未安装 
IfFileExists $4 0 noDotNET 
StrCpy $0 0 
EnumStart: 
EnumRegKey $2 HKEY_LOCAL_MACHINE \ 
"Software\Microsoft\.NETFramework\Policy" $0 
IntOp $0 $0 + 1 
StrCmp $2 "" noDotNET 
StrCpy $1 0 
EnumPolicy: 
EnumRegValue $3 HKEY_LOCAL_MACHINE \ 
"Software\Microsoft\.NETFramework\Policy\$2" $1 
IntOp $1 $1 + 1 
StrCmp $3 "" EnumStart 
IfFileExists "$4\$2.$3" foundDotNET EnumPolicy 
noDotNET: 
StrCpy $0 0 
Goto done 
foundDotNET: 
StrCpy $0 1 
done: 
Pop $4 
Pop $3 
Pop $2 
Pop $1 
Exch $0 
FunctionEnd 

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



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

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