| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1622 人关注过本帖
标题:无法写入数据库
只看楼主 加入收藏
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
 问题点数:0 回复次数:9 
无法写入数据库

这是个简单的读写数据库的程序.编译没有问题.但是更新和新建的数据无法写入数据库.请大家指教

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Data.OleDb;
using System.Windows.Forms;

namespace _0070620_Data
{
public partial class Form1 : Form
{

OleDbConnection OleDbConnection1;
OleDbCommand OleDbCommand1;

OleDbDataAdapter OleDbDataAdapter1;
private bool bNewRecord = false; //表示是否处在插入新记录的状态

private void getCustomerID()
{//获取客户的ID
OleDbDataReader sdr;
OleDbConnection1.Open();
//执行SQL语句并返回
sdr = OleDbCommand1.ExecuteReader(CommandBehavior.CloseConnection);

cbxID.Items.Clear();
while (sdr.Read())
{
cbxID.Items.Add(sdr.GetValue(0));
}
sdr.Close();
cbxID.SelectedIndex = 0;
}
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“shiliDataSet.客户”中。您可以根据需要移动或移除它。
this.客户TableAdapter.Fill(this.shiliDataSet.客户);

String conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shili.mdb";
String sSQL = "Select * From 客户";
//创建一个数据库连接对象
OleDbConnection1 = new OleDbConnection(conn);
OleDbCommand1 = new OleDbCommand(sSQL, OleDbConnection1);

OleDbCommand1.CommandText = "Select 客户ID From 客户 Order By 客户ID";
OleDbDataAdapter1 = new OleDbDataAdapter(sSQL,OleDbConnection1);
//创建一个DataSet对象
DataSet DataSet1 = new DataSet();
OleDbDataAdapter1.Fill(DataSet1, "客户");
getCustomerID();
}

private void cbxID_SelectedIndexChanged(object sender, EventArgs e)
{
//创建SQL命令对象
OleDbCommand Olecmd = new OleDbCommand("Select * From 客户 where 客户ID=@客户ID", OleDbConnection1);
//设置参数
Olecmd.Parameters.AddWithValue("@客户ID",cbxID.Text);

OleDbDataReader sdr;
OleDbConnection1.Open();
sdr=Olecmd.ExecuteReader();

if (sdr.Read())
{
textBox2.Text = sdr.GetString(1);
textBox3.Text = sdr.GetString(2);
textBox4.Text = sdr.GetString(3);
textBox5.Text = sdr.GetString(5);
textBox6.Text = sdr["电话"].ToString(); //电话
textBox7.Text = sdr.GetString(8);
textBox8.Text = sdr.GetString(9);
textBox9.Text = sdr.GetString(4);
textBox10.Text = sdr["邮政编码"].ToString(); //邮政编码
textBox11.Text = sdr["传真"].ToString();//传真
}
sdr.Close();
OleDbConnection1.Close();
}

private void toolStripButton1_Click(object sender, EventArgs e)
{//前一条记录
if (cbxID.SelectedIndex > 0)
cbxID.SelectedIndex--;
else { MessageBox.Show("这是第一条记录", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }

}

private void toolStripButton2_Click(object sender, EventArgs e)
{//后一条记录
if (cbxID.SelectedIndex < cbxID.Items.Count-1)
cbxID.SelectedIndex++;
else { MessageBox.Show("这是最后一条记录", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
}

private void toolStripButton3_Click(object sender, EventArgs e)
{//转到第一条记录
cbxID.SelectedIndex = 0;
}

private void toolStripButton4_Click(object sender, EventArgs e)
{//转到最后一条记录
cbxID.SelectedIndex = cbxID.Items.Count-1;
}

private void toolStripButton5_Click(object sender, EventArgs e)
{//新建记录
textBox2.Text ="";
textBox3.Text ="";
textBox4.Text ="";
textBox5.Text ="";
textBox6.Text ="";
textBox7.Text ="";
textBox8.Text ="";
textBox9.Text ="";
textBox10.Text ="";
textBox11.Text ="";
cbxID.DropDownStyle = ComboBoxStyle.DropDown;
cbxID.Text = "";
bNewRecord = false;

}

private void toolStripButton6_Click(object sender, EventArgs e)
{//保存记录
String OleDbStatement;
//根据是否正在添加新记录来建立适当的SQl语句
if (bNewRecord == false)
{
OleDbStatement = "Insert Into 客户 values(";
OleDbStatement += "'" + cbxID.Text + "',";
OleDbStatement += "'" + textBox2.Text + "',";
OleDbStatement += "'" + textBox3.Text + "',";
OleDbStatement += "'" + textBox4.Text + "',";
OleDbStatement += "'" + textBox9.Text + "',";
OleDbStatement += "'" + textBox5.Text + "',";
OleDbStatement += "'" + textBox10.Text + "',";
OleDbStatement += "'" + textBox6.Text + "',";
OleDbStatement += "'" + textBox7.Text + "',";
OleDbStatement += "'" + textBox8.Text + "',";
OleDbStatement += "'" + textBox11.Text + "')";
}
else
{
OleDbStatement = "Update 客户 Set";
OleDbStatement += "客户ID='" + cbxID.Text + "',";
OleDbStatement += "公司名称='" + textBox2.Text + "',";
OleDbStatement += "联系人姓名='" + textBox3.Text + "',";
OleDbStatement += "联系人头衔='" + textBox4.Text + "',";
OleDbStatement += "联系地址='" + textBox9.Text + "',";
OleDbStatement += "城市='" + textBox5.Text + "',";
OleDbStatement += "政编邮码='" + textBox10.Text + "',";
OleDbStatement += "电话='" + textBox6.Text + "',";
OleDbStatement += "地区='" + textBox7.Text + "',";
OleDbStatement += "国家='" + textBox8.Text + "',";
OleDbStatement += "传真='" + textBox11.Text + "'";
OleDbStatement += "where 客户ID='" + cbxID.Text + "'";
}
OleDbCommand OleDbcmd = new OleDbCommand(OleDbStatement, OleDbConnection1);
try
{
OleDbConnection1.Open();
int rowAffected = OleDbcmd.ExecuteNonQuery();
if (rowAffected == 1) //如果受影响的行数为1行
{
cbxID.Items.Add(cbxID.Text);
}
}
catch (Exception Err)
{
MessageBox.Show("更新错误:" + Err.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
OleDbConnection1.Close();
}
if (bNewRecord ==false)
{
cbxID.DropDownStyle = ComboBoxStyle.DropDownList;
bNewRecord = true;
cbxID.SelectedIndex = cbxID.Items.Count - 1;
}
}

}

}

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

搜索更多相关主题的帖子: 数据库 
2007-06-20 14:44
guang
Rank: 4
来 自:广东深圳
等 级:贵宾
威 望:13
帖 子:1414
专家分:285
注 册:2006-4-3
收藏
得分:0 
这样很难看的,还是说说错误提示吧

不相信未作牺牲竟先可拥有,只相信靠双手找到我的欲求!!
我的博客:http://liao5930.blog.
2007-06-20 15:19
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
编译没错误.就是写不进去

有实力才会有魅力 实力来自坚持不懈的努力
2007-06-20 15:22
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
请大家帮忙啊

有实力才会有魅力 实力来自坚持不懈的努力
2007-06-21 10:05
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
得分:0 
會斷點調試嗎?你要用斷點一條一條跑,看是不是執行到那一句了。

日月更替,天地輪回,人間已是幾回春。 江山不老,人正少年,只手能擎半邊天。
2007-06-21 10:28
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
说不定只是数据只写入到内存中 并没有持久化到数据库

愛生活 && 愛編程
2007-06-21 21:34
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
以下是引用guoxhvip在2007-6-21 21:34:35的发言:
说不定只是数据只写入到内存中 并没有持久化到数据库

就是这个问题啊.请问怎么解决


有实力才会有魅力 实力来自坚持不懈的努力
2007-06-23 01:37
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
你设置一个断点看一下嘛..

飘过~~
2007-06-23 13:01
chenl
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-4-29
收藏
得分:0 
你在getCustomer中好象没看到关闭数据库连接??
2007-06-23 16:24
scroot
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-23
收藏
得分:0 
程序有很多少地方不合理
在这里就不多说了 , 你这个程序如果用数据绑定,只要几行代码

还有,有专门的控件来完成上一条记录,下一条......

说正事:
OleDbCommand OleDbcmd = new OleDbCommand(OleDbStatement, OleDbConnection1);
构造时,OleDbConnection1是空对象,或没有初始化

另外,你的OleDbConnection1要么是全局的,就只open 一次,要么就是局部的,每个方法构造一次
两种不要混在一起

这个程序,应该会出蛮多怪问题

http://cache.
2007-06-23 22:12
快速回复:无法写入数据库
数据加载中...
 
   



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

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