access返回主键值

ww68069362 2009-12-01 11:05:43
数据表 products
字段 proid (自动编号,主键)
proname (文本)

数据库有3条记录,怎么样才能查询proname="45度弯头" 对应的主键值,并复制给一个int变量
...全文
206 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ww68069362 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 goldki 的回复:]
select top 1 [proid] from [products] where [proname]='" + name+"'
顶这个,我也做了一个相同的,就是这个问题
[/Quote]
加了中括号就能避免那个问题了吗?
mohugomohu 2009-12-01
  • 打赏
  • 举报
回复
OleDbCommand cmd = new OleDbCommand("select top 1 proid from products where proname=" + name, con);
ww68069362 2009-12-01
  • 打赏
  • 举报
回复
这个是我编写的一个类其中的一个函数,就是用来返回主键的值,proid是主键,不知道错在哪里,总是提示
System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。
public static int returnproid(string name)
{
OleDbConnection con = db.ConnectionCreate();
con.Open();
OleDbCommand cmd = new OleDbCommand("select proid from products where proname=" + name, con);
int id = Convert.ToInt32(cmd.ExecuteScalar());
return id;
}
叶子 2009-12-01
  • 打赏
  • 举报
回复

declare @proid int
select @proid=proid from products where proname='45度弯头';
select @proid

zetee 2009-12-01
  • 打赏
  • 举报
回复
select proid from products where proname=?

传个参数进去 (proname="45度弯头")

然后 (int)cmd.ExecuteScalar();
Lovely_baby 2009-12-01
  • 打赏
  • 举报
回复
int a = 0;
写一个方法:
里边是sql语句 return的是你的执行的sql结果 int型的
GoldKi 2009-12-01
  • 打赏
  • 举报
回复
select top 1 [proid] from [products] where [proname]='" + name+"'
顶这个,我也做了一个相同的,就是这个问题
wuyq11 2009-12-01
  • 打赏
  • 举报
回复
select top 1 [proid] from [products] where [proname]='" + name+"'
if(sdr.Read())
{

}
ww68069362 2009-12-01
  • 打赏
  • 举报
回复
我检查过了,还是那种情况,逐行调试的话,程序没有问题,能够正常返回值,如果不设置断点的话,就会失败。
wuyq11 2009-12-01
  • 打赏
  • 举报
回复
select top 1 proid from products where proname='" + name+"'
lovebaby 2009-12-01
  • 打赏
  • 举报
回复
检查name是否有值,另外proname应该是字符吧,
select top 1 proid from products where proname='" + name + "'"
ww68069362 2009-12-01
  • 打赏
  • 举报
回复
public static int returnproid(string name)
{
OleDbConnection con = db.ConnectionCreate();
con.Open();
OleDbCommand cmd = new OleDbCommand("select top 1 proid from products where proname=" + name, con);
OleDbDataReader sdr = cmd.ExecuteReader();
sdr.Read();
int id = Convert.ToInt32(sdr[0]);
return id;
}

用这段代码查找,遇到一个非常奇怪的问题,当我在这段代码设置了断点,一条一条的执行的时候,程序能够正常返回值,但是我不设置断点,程序就会报错
至少一个参数没有被指定值。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。

源错误:


行 84: con.Open();
行 85: OleDbCommand cmd = new OleDbCommand("select top 1 proid from products where proname=" + name, con);
行 86: OleDbDataReader sdr = cmd.ExecuteReader();
行 87: sdr.Read();
行 88: int id = Convert.ToInt32(sdr[0]);

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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