C# 使用c在Ms Access 2007中插入时出错#
我正在尝试在数据库Ms Access 2007中插入。首先,我从文件夹中获取所有文件名,然后将该文件名复制到数据库中。这是我的数据库截图 这是我的密码C# 使用c在Ms Access 2007中插入时出错#,c#,asp.net,ms-access-2007,C#,Asp.net,Ms Access 2007,我正在尝试在数据库Ms Access 2007中插入。首先,我从文件夹中获取所有文件名,然后将该文件名复制到数据库中。这是我的数据库截图 这是我的密码 string some = "Nothing"; Response.Write(v); string[] filePaths = Directory.GetFiles(Server.MapPath("~/Gallery/GalleryImage/" + v)); int a =0;
string some = "Nothing";
Response.Write(v);
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Gallery/GalleryImage/" + v));
int a =0;
OleDbCommand cmd = new OleDbCommand();
OleDbConnection mycon = new OleDbConnection();
mycon.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AGENTJ.AGENTJ-PC\Documents\Visual Studio 2010\WebSites\mfaridalam\App_Data\mfaridalam1.accdb";
cmd = mycon.CreateCommand();
mycon.Open();
foreach (string item in filePaths)
{
a++;
string filename = Path.GetFileName(item);
string ips = 00 + a.ToString();
cmd.CommandText = "INSERT INTO [Image] ([Image],[Sort],[Created],[Albumid],[Description],[title])VALUES(" + filename + "," + ips + "," + some + "," +
v + "," + some + "," + some + ");";
int temp = cmd.ExecuteNonQuery();
if (temp > 0)
{
Response.Write("Writing is complete, Success!");
}
else
{
Response.Write("Application Error, Try Again!");
}
Response.Write(filename+ "<br/>");
}
mycon.Close();
cmd.Dispose();
mycon.Dispose();
第42行:int temp=cmd.ExecuteNonQuery() 如果使用参数化查询,则永远不会看到此错误。问题在于字符串串联中,表中每个文本/备注字段中的值传递的字符串周围缺少引号 参数化查询可能需要更多的键入,但更具可读性,并将避免在解析字符串、日期、小数等值时出错。。。。(还有一个叫做Sql注入的大问题)
正如我所看到的,您有7个字段要插入,并且只传递6个值。没有它的6个字段和6个值“插入到[Image]([Image]、[Sort]、[Created]、[Albumid]、[Description]、[title])值(“+filename+”、“+ips+”、“+some+”、“+v+”、“+some+”、“+some+”);”;我得到了解决方案谢谢你无论如何我没有使用单引号谢谢无论如何谢谢你我得到了正确的查询是这个“插入到[图像]([图像],[排序],[创建],[相册ID],[描述],[标题])值(“+filename+”,“+ips+”,“+some+”,“+v+”,“+some+”,“+some+”);”;是的,它会一直工作,直到你有一个包含单引号的值,然后它会因为语法错误而崩溃。(例如Description=“这是Guns N'Roses的最佳专辑”),这只是一个编程问题。还应该考虑SQL注册表之类的安全性标记。不,真的,不要使用字符串连接,始终使用参数化查询。Steve感谢您的推荐。。我可以通过facebook或电子邮件与你联系吗?这样我可以从你那里得到一些有用的提示对不起@JayZee,但我现在很忙,我相信如果你在这里发布其他问题,你会很快得到答案。再见。
No value given for one or more required parameters.
cmd.CommandText = "INSERT INTO [Image] ([Image],[Sort],[Created],[Albumid]," +
"[Description],[title])VALUES(?,?,?,?,?,?)";
cmd.Parameters.AddWithValue("@p1",filename);
cmd.Parameters.AddWithValue("@p2",ips);
cmd.Parameters.AddWithValue("@p3",some);
cmd.Parameters.AddWithValue("@p4",v);
cmd.Parameters.AddWithValue("@p5",some);
cmd.Parameters.AddWithValue("@p6",some);
int temp = cmd.ExecuteNonQuery();