Error in connecting OLEDB and ODBC databases in C#? - c#

While trying to connect the OLEDB databases with .NET Framework, I get a syntax error in the INSERT INTO statement., when running in a 64-bit Windows version.
The same code is running perfectly fine in Windows 32-bit.
I read on the Windows site that Windows does not provide support for 64-bit models.
Is there a work around to this problem?
string vSrc = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\abhi.mdb";
OleDbConnection vconn = new OleDbConnection(vSrc);
vconn.Open();
string vSname = TextBox1.Text;
string vQuery = "insert into Table(Sname)values('"+vSname+"') ";
OleDbCommand vcomm = new OleDbCommand(vQuery, vconn);
vcomm.ExecuteNonQuery();
Label1.Text = "record save successfully";
vconn.Close();

Apparently my hunch was correct. Microsoft.Jet.OLEDB.4.0 provider is not 64-bit compatible:
http://social.technet.microsoft.com/Forums/en/w7itproappcompat/thread/14041b74-6ca6-49be-af90-d8ff3f962724

you have error regarding 64 bit access driver you should look at
Windows 7 64 bit odbc drivers for Ms Access Missing

Related

Could not find installable ISAM access 2016 c#

I'm trying to update table into an .accdb file by a C# program.
I've opened the connection in this way:
cn.ConnectionString= #"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test.accdb;Persist Security Info=True;Database Password=myDb";
cmd.Connection = cn;
string query = "UPDATE MY_TABLE SET NOTE='TEST'";
cmd.CommandText = query;
cn.Open();
but I get this error:
Could not find installable ISAM
I also installed the AccessDatabaseEngine x86, but nothing happened.
Any suggestions?
Thanks!
“Could not find installable isam” is a bit of a generic catch all, usually connection string or driver bitness related. For connection strings that use extended properties like Database Password they may need to be prefixed with something to make it assigned as an extended property of that particular driver
In your case I think you’re missing the relevant specifier for the database password property, which isn’t a typical OLE connectionstring property:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test.accdb; Jet OLEDB:Database Password=MyDbPassword;
Note the extra “Jet OLEDB” before the database password specifier
connectionstrings.com has a raft of info for these things and serves as a handy resource for many different thins that Jet and Ace can connect to

Error opening ODBC database connection in Visual Studios

I hope to make this short and clear enough. I connect to the ODBC without any issues when using Crystal Reports and have previously used the below setup in VS to create apps and it had worked fine. However, now I am receiving the exception below when I call con.Open();
I was wondering how I am able to resolve this issue. Thanks!
{"ERROR [S1000] [Cache ODBC][State : S1000][Native Code
417]\r\n[C:\Program Files (x86)\IIS
Express\iisexpress.exe]\r\nAccess Denied\r\nERROR [01000]
[Microsoft][ODBC Driver Manager] The driver doesn't support the
version of ODBC behavior that the application requested (see
SQLSetEnvAttr)."}
My connection string and methods looks like this:
<connectionStrings>
<remove name="AvatarDBPM"/>
<remove name="AvatarDBCWS"/>
<add name="AvatarDBPM" connectionString="DRIVER={InterSystems ODBC};SERVER=0.0.0.0;PORT=4972;DATABASE=AVPM4972127001;UID=SYSTEMCODE:UN;PWD=MyPsswd;"/>
public DataAccess(string from_date, string to_date)
{
this.from_date = from_date;
this.to_date = to_date;
LOSList = new List<LOS_View_Definition>();
this.PMConnectionString = ConfigurationManager.ConnectionStrings["AvatarDBPM"].ConnectionString;
}
public List<LOS_View_Definition> GetLOSList()
{
#region Command
var command = "my query here";
#endregion
#region get value from DB
try
{
using (OdbcConnection con = new OdbcConnection(PMConnectionString))
{
con.Open();
Try another driver. There are 4 ODBC drivers installed with Cache:
ODBC Version: 2.5, 3.5
Bitness: 32, 64
Also, are you sure, that PORT is not 1972?
Additionally you may supply AUTHENTICATION METHOD=0 parameter.
I think you should use a version of the ODBC driver which is compliant to the requested ODBC specification.If you are using a 64 bit system you should also be using a 64 bit ODBC driver. This error occurs when there is a mismatch between the version of driver installed and the system you are using to compile.

connect to access databae without dsn

I am using the following connection string to connect with my access database from vb.net application, but not get connected.
Driver={Microsoft Access Driver (*.mdb)}; Dbq=D:\Projects\tempdb.mdb
It shows me following error
ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
My code is below:
Dim odbcConn As OdbcConnection = New OdbcConnection(m_connectionString)
'' Build thr odbc Dataadapter
Dim odbcAdpt As OdbcDataAdapter = New OdbcDataAdapter(QueryToExecute, odbcConn)
odbcAdpt.SelectCommand.CommandType = CommandType.Text
I had connection problems.
My project was not connecting to database because there were no default driver.
I have solved this problem.
If you are using 64-bit OS you must use 64-bit MS office. similarly if you are using 32-bit OS you must need 32-bit MS office.
Be sure that you have all application of same number of bits.
Hopefully it will solve your problem.

Connecting to a SQL Server or MySQL database with Windows CE 6.0

I've been having issues trying to connect mySQL Server MC9190 (barcode scanner) to a SQL Server database and I've been having issues. It works fine when I run on my desktop, but when I try to run it on my pocket PC that runs on Windows CE 6.0 it throws the error:
System.TypeLoadException was unhandled
Message="File or assembly name 'System.Data.SqlClient, Version=3.0.3600.0,Culture=neutral, PublicKeyToken=3BE235DF1C8D2AD3', or one of its dependencies, was not found."
Anyone have any idea how to connect my pocket pc to the database so I can input the data I collect from the scanner into the database? Here is my code when I'm trying to connect to the database:
SqlConnection myConnection = new SqlConnection("Server=*****\\SQLEXPRESS;DATABASE=testing;Trusted_Connection=yes;connection timeout=15;user id=************");
try
{
//open the server
myConnection.Open();
//Insert values passed into the metod
SqlCommand myCommand = new SqlCommand("INSERT INTO test (Part_Number, total, number_of_packs, dunsNumber, serialNumber, truck_number) VALUES (#Part_Number,#total,#number_of_packs,#dunsNumber,#serialNumber,#truck_number)", myConnection);
myCommand.Parameters.AddWithValue("#Part_Number", partNumber);
myCommand.Parameters.AddWithValue("#total", total);
myCommand.Parameters.AddWithValue("#number_of_packs", numOfPacks);
myCommand.Parameters.AddWithValue("#dunsNumber", dunsNumber);
myCommand.Parameters.AddWithValue("#serialNumber", serialNumber);
myCommand.Parameters.AddWithValue("#truck_number", laneNumber);
//execute the query
myCommand.ExecuteNonQuery();
myConnection.Close();
}
As far as I'm aware, you cannot use Express on it. You will need to use Compact.
Here is a tutorial on setting up SQL CE with C# Apps.
http://www.dotnetperls.com/sqlce
Here are the install instructions for CE 6 (MS SQL Compact needs an extra install).
http://msdn.microsoft.com/en-us/library/13kw2t64(v=vs.90).aspx
Edit: --> this is assuming you are trying to use a database on the machine itself. Otherwise this won't be your answer.

SQL Server table export to Excel issue

I am using 64-bit Windows Server 2008 with SQL Server 2008. And Using VS2008 + C# + .Net 2.0 + IIS 7.0 + ASP.Net. When executing the following statement, I met with the following error (the error occurs when accessing an aspx page), I am not sure whether it is 64-bit system specific issue?
Sys.WebForms.PageRequestManagerServerErrorException: unregistered OLE DB access interface "Microsoft.Jet.OLEDB.4.0"
StringBuilder sb = new StringBuilder();
sb.AppendLine("select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=" + s_path.Trim() + "',sheet1$) where name is not null"); //e:\\test1.xls
DataSet ds = SqlUtil.ExecuteDataset(Database.StrConn, CommandType.Text, sb.ToString());
if (ds.Tables[0].Rows.Count > 0)
{
GridView_Tlinkmans.DataSource = ds;
GridView_Tlinkmans.DataBind();
}
You have one or 2 issues:
You are querying OPENROWSET in SQL Server and you have x64 SQL Server, you may need the MDAC to bridge SQL Server to ODBC/OLEDB. However, this says it is part of the OS for Win 2008+. I've had to install on Win 2003
Then you probably need this which is the closest to JET I know of: Microsoft Access Database Engine 2010 Redistributable
YMMV

Categories