项目中用到了此功能。把大概做法跟大家共享下,希望对大家有所帮助。也给自己总结一下,激励自己再接再厉。下面中部分代码被汉字替换了,主要考虑到公司的产品权,希望谅解。
/// <summary>
/// 点击打开按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOpen_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog ofd = new OpenFileDialog();
......
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Win32;
using Access = Microsoft.Office.Interop.Access;
namespace ImageAccess
{
static class Program
{
#region DllImportAttribute
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
static extern bool ShowWindow(IntPtr handle, int flags);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
static extern bool SetForegroundWindow(IntPtr handle);
#endregion
[STAThread]
static void Main()
{
......
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Win32;
using Access = Microsoft.Office.Interop.Access;
namespace ImageAccess
{
static class Program
{
#region DllImportAttribute
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
static extern bool ShowWindow(IntPtr handle, int flags);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
static extern bool SetForegroundWindow(IntPtr handle);
#endregion
[STAThread]
static void Main()
{
......
在SQL Server中模糊查询通常是这样的Select * from articleTable where authorName like '%jacky%'
但是在Access中用这条语句执行的时候竟然发现查不出结果,怎么可能呢?
后来查了下资料,发现问题如下:
要进行模糊查找,则必须使用通配符,ACCESS库的通配符和SQL SERVER的通配符不一样。
ACCESS库的通配符为:
* 与任何个数的字符匹配。
? 与任何单个字母的字符匹配
在SQL Server中的通配符为:
% 与任何个数的字符匹配
- 与单个字符匹配
但是又发现,C#连接到Access数据库之后,用这样一条语句Select * from articleTable where authorName like '*jacky*' (注意,这边按照上述通配符的要求将%修改为*了)竟然搜索不到应该存在的N条记录,我靠 ......
在写这篇博文的时候,我真的忍不住叫一声,他妈的变态,今天做一个网站时候,由于要用到ACCESS,那就用了,把之前的链接语句COPY+C过来
看看有什么问题。
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source="+System.Web.HttpContext.Current.Server.MapPath("window2003.mdb");
一看,应该没什么问题吧!!!
结果出现了以下症状
“找不到可安装的ISAM”
我急了,一下子百度了很多下,依然没有结果,后来去了一个博客哪里,博主也出现同样的问题
我欢喜若狂,抄
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source="+System.Web.HttpContext.Current.Server.MapPath("window2003.mdb");
但是怎么看都是那一句呀!!!
那是怎么回事呀
原来,Data Source这里的空格作怪,你弄多几个空格,它就识别不了,就出现了上述的症状,有兴趣的朋友可以试试,还害得我重装了OFFICE软件呢!!真他们害人呀!! ......
今天,还是在做那个项目,依然使用往常的sqlhelper用法,往常的数据库操作类,但是偏偏调试不成功,而且最重要的是,它不报错
中午吃饭回来,本来想打算睡个午觉的,但是项目太紧迫了,于是又跟车车研究了一中午,最后,发现如果不用@参数传递的话,是正常运行的,于是百度了一下,那些人说要用“?”当占位符
我想想觉得不正确,于是做了一个实验,发现那是假话
晚上回来,国龙帮我解决了这个问题了
原来,sqlhelper对参数赋值的时候,是循环来赋值的,也就是说,string sql="";中的参数位置,与
OleDbParameter[] paras ={ new OleDbParameter("@introduction",company.Introduction),
new OleDbParameter("@company_ID",company.Company_ID)
  ......