我想用parameters属性将数据插入到Access数据库中,但是老是实现不了,研究了很久都搞不懂,各位高手帮帮忙看下我的代码是否有问题啊~~

kami_bin 2012-05-09 09:03:20
string connectionString = Properties.Settings.Default.dataConnectionString;
int i = 0;
DateTime gendate;
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
while (i < chooselistbox.Items.Count)
{
string sql = "insert into tData(fCode,fGenDate) values(@fCode,@fGenDate) ";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.Add("@fCode", OleDbType.VarChar);
cmd.Parameters.Add("@fGenDate", OleDbType.DBDate);
cmd.Parameters["@fCode"].Value = chooselistbox.Items[i];
d.TryGetValue(chooselistbox.Items[i].ToString(), out gendate);
cmd.Parameters["@fGenDate"].Value = string.Format("{0}/{1}/{2}", gendate.Year, gendate.Month, gendate.Day);
int number = cmd.ExecuteNonQuery();
i++;
}
conn.Close();
MessageBox.Show("数据已存入数据库");
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kami_bin 2012-05-09
  • 打赏
  • 举报
回复
试过了,还是不行……
[Quote=引用 5 楼 的回复:]

string sql = "insert into tData(fCode,fGenDate) values(@fCode,@fGenDate) ";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.Add("@fCode", OleDbType.VarChar);
cmd.Parameters.Add("@fG……
[/Quote]
kami_bin 2012-05-09
  • 打赏
  • 举报
回复
那我这里的话是要把values(@fCode,@fGenDate)这句改成values(?,?)吗?
但是这样怎么把数据存进去啊?
[Quote=引用 4 楼 的回复:]

string sql = "insert into S_Admin(UserName,Password,Remark,Mail,DepartId,Power)values(?,?,?,?,?,?)";
[/Quote]
孟子E章 2012-05-09
  • 打赏
  • 举报
回复
Access日期的问题可以参考
http://dotnet.aspx.cc/article/27c0d578-e4df-44dc-91a7-54ba10a53d1f/read.aspx
孟子E章 2012-05-09
  • 打赏
  • 举报
回复
string sql = "insert into tData(fCode,fGenDate) values(@fCode,@fGenDate) ";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.Add("@fCode", OleDbType.VarChar);
cmd.Parameters.Add("@fGenDate", OleDbType.DBDate);
cmd.Parameters["@fCode"].Value = chooselistbox.Items[i];
d.TryGetValue(chooselistbox.Items[i].ToString(), out gendate);
cmd.Parameters["@fGenDate"].Value = gendate;
int number = cmd.ExecuteNonQuery();
i++;

这样呢?应该是日期格式的问题
wangsong145 2012-05-09
  • 打赏
  • 举报
回复
string sql = "insert into S_Admin(UserName,Password,Remark,Mail,DepartId,Power)values(?,?,?,?,?,?)";
wangsong145 2012-05-09
  • 打赏
  • 举报
回复
在Access里的占位符应该是?示例代码如下:

public bool InsertAdmin(string userName, string password, string remark, string mail, int departId, int power) { string sql = "insert into S_Admin(UserName,Password,Remark,Mail,DepartId,Power)values(?,?,?,?,?,?)"; OleDbConnection connection = new OleDbConnection(); connection.ConnectionString = "";//此处设置链接字符串 //注意下面参数的顺序一定要按照sql语句中的插入的列的顺序赋值,否则一定会报异常 OleDbCommand command = new OleDbCommand(sql, connection); command.Parameters.Add("?", OleDbType.LongVarWChar, 60).Value = userName; command.Parameters.Add("?", OleDbType.LongVarWChar, 60).Value = password; command.Parameters.Add("?", OleDbType.LongVarWChar, 60).Value = remark; command.Parameters.Add("?", OleDbType.LongVarWChar, 60).Value = mail; command.Parameters.Add("?", OleDbType.Integer, 4).Value = departId; command.Parameters.Add("?", OleDbType.Integer, 4).Value = power; connection.Open(); int rowsAffected = command.ExecuteNonQuery(); connection.Close(); command.Dispose(); return rowsAffected > 0; }
kami_bin 2012-05-09
  • 打赏
  • 举报
回复
是要改成这样吗?但是测试了还是不行
 while (i < chooselistbox.Items.Count)
{
string sql = "insert into tData(fCode,fGenDate) values(@fCode,@fGenDate) ";
d.TryGetValue(chooselistbox.Items[i].ToString(), out gendate);
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.Add("@fCode", OleDbType.VarChar).Value = chooselistbox.Items[i];
cmd.Parameters.Add("@fGenDate", OleDbType.DBDate).Value = string.Format("{0}/{1}/{2}", gendate.Year, gendate.Month, gendate.Day);
//cmd.Parameters["@fCode"].Value = chooselistbox.Items[i];
//d.TryGetValue(chooselistbox.Items[i].ToString(), out gendate);
//cmd.Parameters["@fGenDate"].Value = string.Format("{0}/{1}/{2}", gendate.Year, gendate.Month, gendate.Day);
int number = cmd.ExecuteNonQuery();
i++;
}

[Quote=引用 1 楼 的回复:]

cmd.Parameters.Add("@fCode", OleDbType.VarChar);
只有参数名和类型,插入的参数值呢。应该先赋值后添加。
[/Quote]
mizuho_2006 2012-05-09
  • 打赏
  • 举报
回复
cmd.Parameters.Add("@fCode", OleDbType.VarChar);
只有参数名和类型,插入的参数值呢。应该先赋值后添加。

111,126

社区成员

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

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

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