C# C和ACCESS SQL(*.accdb)
好了,各位,我用DB编写了我的第一个C程序,但我遇到了一个问题。我从ACCESS数据库获取,文件的方向是我需要复制字符串的位置。在Access中,查询正在运行,但我的程序无法获取此字符串并从中复制文件。。。我做错了什么?p、 对不起我的英语 代码如下:C# C和ACCESS SQL(*.accdb),c#,ms-access,C#,Ms Access,好了,各位,我用DB编写了我的第一个C程序,但我遇到了一个问题。我从ACCESS数据库获取,文件的方向是我需要复制字符串的位置。在Access中,查询正在运行,但我的程序无法获取此字符串并从中复制文件。。。我做错了什么?p、 对不起我的英语 代码如下: static void Main(string[] args) { Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel
static void Main(string[] args)
{
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet mysheet;
Microsoft.Office.Interop.Excel.Range myrange;
excel.Workbooks.Open("E:\\access\\Book1.xlsm");
//excel.Visible = true;
mysheet = excel.Worksheets[1];
myrange = mysheet.Cells;
int lastrow = mysheet.UsedRange.Count;
for (int i = 1; i <= lastrow; i++)
{
Console.WriteLine(myrange.Item[i, 1].Value);
string fileName = myrange.Item[i, 1].Value + ".pdf";
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data source= E:\ACCESS\test.accdb";
conn.Open();
String my_query = "SELECT adres FROM zrodla WHERE RIGHT(adres,21) = '" + fileName + "'";
OleDbCommand cmd = new OleDbCommand(my_query, conn);
cmd.ExecuteNonQuery();
//DateTime ddd = DateTime.Now;
//string ddd2 = ddd.ToString("yyyy-MM-dd");
//string miesiac = ddd.ToString("MM");
//string dzien = ddd.ToString("dd");
string sourcePath = cmd.ToString();
string targetPath = @"E:\ACCESS\ho\";
if (System.IO.File.Exists(sourcePath+fileName))
{
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(sourceFile, destFile, true);
}
else
{
Console.Write("Plik nie istnieje!: " + fileName+"\n");
System.Data.OleDb.OleDbConnection conn2 = new System.Data.OleDb.OleDbConnection();
conn2.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data source= E:\ACCESS\test.accdb";
conn2.Open();
String my_query2 = "INSERT INTO dane(appid) VALUES('"+fileName+"')" ;
OleDbCommand cmd2 = new OleDbCommand(my_query, conn2);
cmd2.ExecuteNonQuery();
}
}
}
ExecuteOnQuery不会返回任何结果,但我怀疑您希望获得查询结果,而这不能仅通过使用cmd.ToString来实现
正确的方法是使用ExecuteReader,它返回一个可用于检查结果的数据读取器。读取器一次查看一行,您可以检查各个列的内容,并可以移动到下一行。我相信有很多资源可以帮助您使用阅读器,例如字符串sourcePath中的,我需要查询结果,如E:\pb\send\2017-05-03\A_201602020005555.pdf,但结果为0。。。我不知道为什么sourcePath中总是0-而不是access记录中保存的方向..我尝试使用ExecuteReader,但仍然出错。。。也许问题是查询的结果?E:\pb\send\2017-05-03\A_20160202000555555.pdf错误消息可能有助于确定问题所在。否则我们只能盲目猜测。