为什么说我的SQL语句有错?(初学者)

lxxlily 2004-05-13 08:14:14
执行后报下面的错误:
insert into tblReply (ReID,Memo) values (2,'xxxxxxxxxx')System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。

程序:
clsData.cs
__________________________________
using System;
using System.Data;
using System.Data.OleDb;


namespace clsGuest
{
/// <summary>
/// clsData 的摘要说明。
/// cslData:处理连接数据库存的代码封装。
/// </summary>
public class clsData
{
///私有成员变量申明
///connStr:连接数据库的字符串
///conn:连接数据库的对象

private string connStr;
private OleDbConnection conn;

public clsData()
{
//
// TODO: 在此处添加构造函数逻辑
//
//connStr="Provider=SQLOLEDB;server=localhost;uid=sa;pwd=hy;database=pubs";
connStr="PROVIDER=Microsoft.jet.OLEDB.4.0;data source=sysGuest.mdb";
conn=new OleDbConnection(connStr);
}
public clsData(string strConn)
{
connStr=strConn;
conn=new OleDbConnection(connStr);
}
public OleDbConnection Open()
{
conn.Open();
return conn;

}

public void Close()
{
conn.Close();
}
/*程序测试主函数
public static void Main()
{
clsData sysDb=new clsData("PROVIDER=Microsoft.jet.OLEDB.4.0;data source=sysGuest.mdb");
try
{
sysDb.Open();
Console.WriteLine("数据库已打开!");
}
catch(Exception se)
{
Console.WriteLine(se.Message.ToString());
}
finally
{
Console.WriteLine("这是连接数据库的!");
}

}*/
}
}

__________________________________________


clsReply.cs
______________________________________
using System;
using System.Data;
using System.Data.OleDb;

namespace clsGuest
{
/// <summary>
/// clsReply 的摘要说明。
/// </summary>
public class clsReply
{
private int ReID;
private int id;
private string Memo;
private string sql;
private OleDbConnection conn;
private OleDbCommand cmd;

private clsData sysData;

public clsReply()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

public clsReply(int StrId,string StrMemo)
{
ReID = StrId;
Memo = StrMemo;


}

public clsReply(int StrId)
{
id=StrId;
}

public void NewReply()
{
sysData = new clsData();
conn = sysData.Open();
sql = "insert into tblReply (ReID,Memo) values (" + ReID + ",'" + Memo + "')";
Console.Write(sql);
cmd = new OleDbCommand (sql,conn);
cmd.ExecuteNonQuery();
}

public void Delete()
{
sysData = new clsData();
conn = sysData.Open();
sql = "delete from tblReply where id="+id;
cmd = new OleDbCommand(sql,conn);
cmd.ExecuteNonQuery();
}


public static void Main()
{
clsReply re=new clsReply(2,"xxxxxxxxxx");
Console.WriteLine("实例化新用户");

try
{
re.NewReply();
Console.WriteLine("记录添加成功!");

}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}

}
}

}

_____________________________
我执行的是clsReply.cs








...全文
38 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
whmjw 2004-05-13
  • 打赏
  • 举报
回复
sorry,没有看清是INT型
whmjw 2004-05-13
  • 打赏
  • 举报
回复
cmd = new OleDbCommand (sql,conn);

在这里设断点,看Sql的值是多少,用中断并添加监视,然后把Sql的值Copy 一份,放在Sql查询分析器里执行一下,看报不报错,

我就是这么干的
Firestone2003 2004-05-13
  • 打赏
  • 举报
回复
int类型不用引号
lxxlily 2004-05-13
  • 打赏
  • 举报
回复
ReID是int类型的,不是字符类型,如果用你所说的方法也是报一样的错误:INSERT INTO 语句的语法错误。
whmjw 2004-05-13
  • 打赏
  • 举报
回复
你差引号,我一般用一楼的方法写,这样不会出错
whmjw 2004-05-13
  • 打赏
  • 举报
回复
这是你的,
insert into tblReply (ReID,Memo) values (" + ReID + ",'" + Memo + "')";
这是我帮你改的

"insert into tblReply (ReID,Memo) values (" +"'" ReID + "'"+",'" + Memo + "')";
lxxlily 2004-05-13
  • 打赏
  • 举报
回复
不是和我那个是一回事吗?
whmjw 2004-05-13
  • 打赏
  • 举报
回复
"insert into tblReply (ReID,Memo) values (" +"'" ReID + "'"+",'" + Memo + "')";
whmjw 2004-05-13
  • 打赏
  • 举报
回复



string SQLInsertModel="insert into tblReply (ReID,Memo) values ( '{0}','{1}')";
sql=String.Format(SQLInsertModel,ReID,Memo );
cmd = new OleDbCommand (sql,conn);

OK

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧