社区
C#
帖子详情
用C#编写的小程序,向数据库写数据时出现的错误
wenshibo99
2005-07-18 04:28:47
软件开发环境是vs.net2003,数据库用的是sql2000
用C#编写了一个个人通讯录,读数据库里面的数据正常,但是写数据的时候或者更新数据的时候就出现问题了,错误提示如下:
未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。
其他信息: 系统错误
请高手指点一下,谢谢!
...全文
174
12
打赏
收藏
用C#编写的小程序,向数据库写数据时出现的错误
软件开发环境是vs.net2003,数据库用的是sql2000 用C#编写了一个个人通讯录,读数据库里面的数据正常,但是写数据的时候或者更新数据的时候就出现问题了,错误提示如下: 未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。 其他信息: 系统错误 请高手指点一下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wenshibo99
2005-07-20
打赏
举报
回复
谢谢各位大侠了,上面的问题解决了,确实是少了一个单引号,以后小弟会注意的
另一个模块也出现了这样的问题,说“未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。”
代码如下:
private void buttonSaveChange_Click(object sender, System.EventArgs e)
{
DialogResult result;
//弹出确认信息
result=MessageBox.Show(this,"确认要修改用户信息吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RightAlign);
if(result==DialogResult.Yes)
{
//检查姓名字段是否为空
if(textBoxName.Text.Trim()=="")
{
MessageBox.Show("姓名不能为空,请重新输入!","错误");
return;
}
DataTable dt=myDataSet.Tables["Records"];
//检查该记录的姓名是否可用
bool bExist=false;
foreach(DataRow drw in dt.Rows)
{
if(drw["姓名"]!=treeViewMain.SelectedNode.Text.Trim()&&drw["姓名"]==textBoxName.Text.Trim())
{
bExist=true;
}
}
if(bExist)
{
MessageBox.Show("该记录的姓名已被其他记录使用,请重新选择!","错误");
return;
}
//修改对应记录信息
DataColumn[] dc=new DataColumn[1];
dc[0]=dt.Columns["姓名"];
dt.PrimaryKey=dc;
object key=treeViewMain.SelectedNode.Text.Trim();
//查找对应的记录
DataRow dr=dt.Rows.Find(key);
dr["姓名"]=textBoxName.Text.Trim();
dr["性别"]=comboBoxSex.SelectedText;
//DateTime数据类型的处理
if(textBoxYear.Text.Trim()!="")
{
//对年份进行语法检查
try
{
//把字符串内容变成数字
Convert.ToInt16(textBoxYear.Text.Trim());
}
catch(FormatException ee)
{
MessageBox.Show("年份输入不正确,请重新输入!","错误");
return;
}
int year,month,day;
//设定年月日的值
year=Convert.ToInt16(textBoxYear.Text);
month=comboBoxMonth.SelectedIndex+1;
day=comboBoxDay.SelectedIndex+1;
DateTime datetime=new DateTime(year,month,day);
dr["出生日期"]=datetime;
}
//设定其他内容
if(textBoxBelong.Text.Trim()!="")
{
dr["生肖"]=textBoxBelong.Text.Trim();
}
if(textBoxConstellation.Text.Trim()!="")
{
dr["星座"]=textBoxConstellation.Text.Trim();
}
if(textBoxAddress.Text.Trim()!="")
{
dr["家庭地址"]=textBoxAddress.Text.Trim();
}
if(textBoxPhone.Text.Trim()!="")
{
dr["电话"]=textBoxPhone.Text.Trim();
}
if(textBoxMobile.Text.Trim()!="")
{
dr["手机"]=textBoxMobile.Text.Trim();
}
if(textBoxOicq.Text.Trim()!="")
{
dr["Oicq"]=textBoxOicq.Text.Trim();
}
if(textBoxEmail.Text.Trim()!="")
{
dr["Email"]=textBoxEmail.Text.Trim();
}
//文件类型数据的处理
if(pictureBoxLook.Image!=null)
{
//新建一个内存流
MemoryStream ms=new MemoryStream();
//把图片内容存到内存流中去
pictureBoxLook.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);
//把内存流中的内容按字节读入字节数组中
byte[] myData=new byte[ms.Length];
ms.Position=0;
ms.Read(myData,0,Convert.ToInt32(ms.Length));
dr["图片"]=myData;
ms.Close();
}
//treeView的同步更新
treeViewMain.SelectedNode.Text=textBoxName.Text;
//更新数据库信息,保持DataSet与数据库的一致
myDataAdapter.Update(myDataSet,"Records");
}
}
wenshibo99
2005-07-19
打赏
举报
回复
代码如下,在最后的myCommand.ExecuteNonQuery();出错
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace 个人通讯录
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class LogForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Label labelUser;
private System.Windows.Forms.Label labelPW;
private System.Windows.Forms.TextBox textBoxUser;
private System.Windows.Forms.TextBox textBoxPW;
private System.Windows.Forms.Button buttonNewUser;
private System.Windows.Forms.Button buttonLogOn;
private System.Windows.Forms.Button buttonExit;
private SqlConnection myConnection;
private MainForm mainForm;
//(2)
//重载LogForm的构造函数,把主窗口的指针作为参数传入
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public LogForm(MainForm pForm)
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//设置连接字符串
string myConnectionString;
myConnectionString="Initial Catalog=addresslist;"+"Data Source=localhost;user id=sa;password=;Connect Timeout=30";
//新建一个连接对象
myConnection=new SqlConnection(myConnectionString);
try
{
//建立连接
myConnection.Open();
}
catch(SqlException e)
{
//弹出对话框提示登录失败
MessageBox.Show("出错,不能连接服务器!");
//改变LogForm的text表示登录失败
this.Text="登录数据库失败,请退出检查与数据库的连接";
//禁止新建用户和登录功能
buttonNewUser.Enabled=false;
buttonLogOn.Enabled=false;
}
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
mainForm=pForm;
//根据myConnection的状态返回信息
if(mainForm.myConnection.State==System.Data.ConnectionState.Closed)
{
//弹出对话框表示登录失败
MessageBox.Show("出错,不能连接服务器!");
//改变LogForm的text表示登录失败
this.Text="登录数据库失败,请退出检查与数据库的连接";
//禁止新建用户和登录功能
buttonNewUser.Enabled=false;
buttonLogOn.Enabled=false;
}
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
//以MainForm作为主登录窗口
Application.Run(new MainForm());
}
private void buttonLogOn_Click(object sender, System.EventArgs e)
{
//设置SQL命令字符串
string commandstring;
commandstring="select * from Users";
//使用SqlCommand
SqlCommand myCommand;
myCommand=new SqlCommand();
myCommand.Connection=mainForm.myConnection;
myCommand.CommandText=commandstring;
//执行ExecuteReader()返回DataReader类
SqlDataReader myDataReader;
myDataReader=myCommand.ExecuteReader();
bool b_accept=false;
//循环读取DataReader中的每一个记录,看用户密码是否正确
while(myDataReader.Read())
{
//(4)
//如果用户名和密码正确的话设置b_accept为真
if(myDataReader.GetString(0).Trim()==textBoxUser.Text.Trim()&&myDataReader.GetString(1).Trim()==textBoxPW.Text.Trim())
{
b_accept=true;
break;
}
}
myDataReader.Close();
//如果用户密码正确,关闭当前窗口,否则显示错误信息
if(b_accept==true)
{
//显示用户信息
mainForm.currentUser=textBoxUser.Text;
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误,请重新输入!","错误");
}
}
private void buttonExit_Click(object sender, System.EventArgs e)
{
//退出程序
Application.Exit();
}
private void buttonNewUser_Click(object sender, System.EventArgs e)
{
DialogResult result;
//(1)
//弹出确认信息
result=MessageBox.Show(this,"确定要添加新用户吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RightAlign);
//(2)
//确认要添加
if(result==DialogResult.Yes)
{
string commandstring;
//设置数据库查询语句
commandstring="select * from Users";
//使用SqlCommand
SqlCommand myCommand;
myCommand=new SqlCommand();
myCommand.Connection=mainForm.myConnection;
//设定查询语句为commandstring
myCommand.CommandText=commandstring;
//执行ExecuteReader()返回DataReader类
SqlDataReader myDataReader;
myDataReader=myCommand.ExecuteReader();
bool b_exist=false;
//循环读取DataReader中的每一个记录,看用户是否已经存在
while(myDataReader.Read())
{
//如果用户名已经存在的话设置b_exist为true
if(myDataReader.GetString(0).Trim()==textBoxUser.Text.Trim())
{
b_exist=true;
break;
}
}
myDataReader.Close();
//弹出提示信息,并退出新建用户事件
if(b_exist==true)
{
MessageBox.Show("对不起,该用户已经存在,请重新输入!","错误");
return;
}
//(3)
//用户不存在,添加用户
string sInsert="insert into Users (用户名,密码)"+" values ('"+textBoxUser.Text.Trim()+"','"+textBoxPW.Text.Trim()+")";
//设置添加记录字符串
//myCommand=new SqlCommand();
myCommand.CommandText=sInsert;
myCommand.Connection=mainForm.myConnection;
//(4)
//执行SQL命令
myCommand.ExecuteNonQuery();
//设置MainForm的当前用户,关闭登录窗口
mainForm.currentUser=textBoxUser.Text.Trim();
this.Close();
}
}
}
}
tangbingjun
2005-07-19
打赏
举报
回复
同意,这在DELPHI中已常出现的。
CnEve
2005-07-19
打赏
举报
回复
string sInsert="insert into Users (用户名,密码)"+" values ('"+textBoxUser.Text.Trim()+"','"+textBoxPW.Text.Trim()+")";
最后面少了个单引号
values ('"+textBoxUser.Text.Trim()+"','"+textBoxPW.Text.Trim()+"')";
sky592
2005-07-19
打赏
举报
回复
看得好晕,你还是在catch中捕捉一下错误吧,数据库中的错误一般不难的
wonderful_abc
2005-07-19
打赏
举报
回复
如wuzy1229(wuzy1229) 所说。
wuzy1229
2005-07-19
打赏
举报
回复
另外要加异常处理
wuzy1229
2005-07-19
打赏
举报
回复
'"+textBoxPW.Text.Trim()+"')";
cdo
2005-07-18
打赏
举报
回复
贴出sql语句来看看.
dahuzizyd
2005-07-18
打赏
举报
回复
检查下你的sql语句有没有错误,或者直接跟踪下,把sql语句拿到查询分析器里执行下
dahuzizyd
2005-07-18
打赏
举报
回复
检查下你的sql语句有没有错误,或者直接跟踪下,把sql语句拿到查询分析器里执行下
深山老翁
2005-07-18
打赏
举报
回复
可能SQL语句或参数出错,具体问题要看代码才能做决定。。呵呵。。
C#
数据
库
管理例子程序
用
C#
编
写
的一个访问
数据
库
的小例子程序,有源码,大家可以修改,更新的效果没有
写
好,不过也可以参考
C#
编
写
的QQ程序带
数据
库
C#
编
写
的QQ程序源代码带
数据
库
适合初学者学习
微信
小程序
系统教程
C#
版[3/3阶段]_微信
小程序
电商系统
后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝...
C#
编
写
实现定
时
备份ORACLE
数据
库
的辅助
小程序
这是一个由
C#
编
写
,用于实现定
时
备份ORACLE
数据
库
的辅助
小程序
。程序运行后会在程序所在目录生成一个exp_run.par文件和Export.bat文件,然后执行Export.bat文件来进行备份ORACLE
数据
库
。但程序本身并为实现定
时
的...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章