|
|
This question has to be easy, but I can't seem to find the answer. I'm working with Visual Basic and I've defined a form with a button, an OleDbConnection, an OleDbDataAdapter and a Dataset.
The DataAdapter has a select command like SELECT * from patients where name LIKE 'm%'. (It too me much sweat to figure out to use m% and not m*, but that is another story.)
The next step is use an edit box where I can enter the patient name. Then I want to take that and either change the adapter command text, or use something like
SELECT * from patients where name LIKE ?
and fill in the ?.
There must be an easy way to do this, as this is bread and butter, but I have yet to find it.
Thanks,
Ilan
|
|
|
|
|
The problem I refer to above boils down to the fact that it doesn't know "As OleDbConnection", "As OleDbCommand" or "As OleDbDataAdapter" in mysub().
It knows the same functions as New commands, and it works find with Button1_Click which actually uses OleDbConnection1, sty1 (an OleDbDataAdapter) and stds (a Dataset).
I can't figure out why it gives me the compilation errors. If it were a C++, I would say some include file is missing.
Below is the code, and I'm stuck.....
Thanks for any help.
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OleDbConnection1.Open()
sty1.Fill(stds, "studies")
OleDbConnection1.Close()
End Sub
Private Sub mysub()
Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;" & _
"Integrated Security=SSPI;Initial Catalog=northwind")
Dim selectCMD As OleDbCommand = New OleDbCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn)
selectCMD.CommandTimeout = 30
Dim custDA As OleDbDataAdapter = New OleDbDataAdapter
End Sub
End Class
|
|
|
|
|
Hello,
I'm trying to read BLOB field that contains RTF-data (Microsoft Word file) using VC++ and ADO. Actually, i have the code:
CoInitialize(NULL);
_ConnectionPtr spConn(__uuidof(Connection));
_RecordsetPtr spRs;
CString cnctstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb; Persist Security Info=False;";
CString Qry = "select * from testtable";
spConn->Open((_bstr_t) cnctstr, "", "", adConnectUnspecified);
spRs = spConn->Execute((_bstr_t) Qry, NULL, adCmdText);
//
// BLOB data reading section
//
spConn->Close();
CoUninitialize();
Should I use a "_variant_t" data type or anything like that to access the data that I need? Please help to solve this problem.
All the comments will be appreciated, thanks in advance.
|
|
|
|
|
|
Hi, authoring a task report with Microsoft SQL Server's Reporting Service. It consists of Projects, Tasks and subtasks. So, naturally, I group tasks by:
1. Project
2. Task Owner.
The trouble is, "grouping" inevitably lead to a drilldown box for each group - Drilldown button is okay on "Preview", I clicked and things get expanded as expected. I then deployed the report and view from http://localhost/reports. The reports get loaded and I clicked on the drilldown button -- I can tell there's a postback everytime I click drilldown. But nothing gets expanded in response. Is there any work around for this? I have already applied Reporting Service's SP1.
Thanks in advance.
Norman Fung
|
|
|
|
|
Help! Child-Parent relationship -- Key happens to be a composite key
Hi, I'm having a lot of trouble trying to get this work. I have two classes:
1. AppProperty (Parent)
2. AppPropertyValue (Child)
1. AppProperty class' PK column is PropertyUIN (Int32).
2. AppPropertyValue class' composite key column is {PropertyUIN (Int32), PropertyValue (String)}
3. One AppProperty instance can relate to MANY AppPropertyValue instance. The two are related by "PropertyUIN".
Trouble is, when I tried to persist the child class, I get:
SqlException wrapped around by a NHibernate.ADOException
Message "Column name 'PropertyUIN' appears more than once in the result column list.
Statement(s) could not be prepared." String
"PropertyUIN" appears twice because it's part of the composite key AND at the same time it appears for the second time in AppPropertyValue's hbm file for I need to declare "many-to-one" between AppProperty and AppPropertyValue. What should I do to resolve this situation?
Thanks in advance.
Code Fragment:
Public Class AppProperty
Implements ISerializable
Protected _propertyUIN As Int32
...
...
Public Property PropertyUIN() As Int32
Get
Return _propertyUIN
End Get
Set(ByVal Value As Int32)
_propertyUIN = Value
End Set
End Property
...
End Class
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="application.utilities.settings.AppProperty, Utility" table="AppProperty">
<id name="PropertyUIN" column="PropertyUIN" type="Int32" >
<generator class="identity" />
</id>
... stuff ...
<set name="Values" inverse="true" cascade="all" table="AppPropertyValue">
<key column="PropertyUIN"/>
<one-to-many class="application.utilities.settings.AppPropertyValue, Utility"/>
</set>
... the rest of it ...
</class>
</hibernate-mapping>
Public Class AppPropertyValue
Implements ISerializable
Protected _propertyUIN As Int32
Protected _propertyValue As String
Protected _parentProperty As AppProperty
...
...
Public Property PropertyUIN() As Int32
Get
Return _propertyUIN
End Get
Set(ByVal Value As Int32)
_propertyUIN = Value
End Set
End Property
Public Property PropertyValue() As String
Get
Return _propertyValue
End Get
Set(ByVal Value As String)
_propertyValue = Value
End Set
End Property
Public Property ParentProperty() As AppProperty
Get
Return _parentProperty
End Get
Set(ByVal Value As AppProperty)
_parentProperty = Value
End Set
End Property
...
End Class
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="application.utilities.settings.AppPropertyValue, Utility" table="AppPropertyValue">
<composite-id>
<key-property name="PropertyUIN" column="PropertyUIN" type="Int32"/>
<key-property name="PropertyValue" column= "PropertyValue" type="String" length="2500"/>
</composite-id>
<many-to-one name="ParentProperty" column="PropertyUIN" class="application.utilities.settings.AppProperty, Utility" />
... stuff ...
</class>
</hibernate-mapping>
CREATE TABLE AppProperty (
PropertyUIN INTEGER IDENTITY(1,1),
...
PRIMARY KEY (PropertyUIN)
)
CREATE TABLE AppPropertyValue (
PropertyUIN INTEGER,
PropertyValue VARCHAR(2500),
...
)
|
|
|
|
|
I have developed an account system. and when i deploy it a message appeared "Some files are out of date". i just countinued but on target mechine a message appeared "Some files are out of date do you want to update them click yes to restart" i did and after loading windows again when i started setup.exe again same message appeared again so i am still unable to install that application . Target plate form is Microsoft Windows 98.
Salman Sheikh
|
|
|
|
|
Hi, I have this stored procedure that launches an executable using xp_cmdshell. This stored proc is triggered by a job:
EXEC sp_SYN_CONTACT
The stored proc itself is:
EXEC master..[xp_cmdshell] 'C:\Inetpub\wwwroot\VendorManagementWeb\bin\SyncContact.exe'
SyncContact is a VB.NET console app that loads contacts into outlook contact list. Trouble is, it seems hangs/freezes everytime when it executes the following:
folder = ns.GetDefaultFolder(msoutlook.OlDefaultFolders.olFolderContacts)
Why is it having trouble retrieving default folder? I tried setting SQL Server agent to impersonate "System" account - but nothing works. btw, the console app works if I launch it myself instead of launching it as a SQL Server job - suspecting it's got to do with security/DCOM/Impersonation level...? But I'm not familiar with this subject.
Thanks in advance.
Norman Fung
|
|
|
|
|
Hi, I really need help on this.
I have an ORACLE 9i release 2 database.
I've created a table where one of its column is using the new Oracle Timestamp datatype.
I try to access this table using OracleCommand from OracleClient namespace and found a strange behaviour. Some of the value returned for the Timestamp column was not correct. When the fraction behinds the seconds value (the millisecond value) was not zero, it was returned correctly. But when it has no fraction on it, sometime it was not returned correctly (there are some fraction on it).
Here are some examples of it.
-----------------
On Oracle database :
-----------------
create table test (testaudittime timestamp(3));<br />
insert into TEST values(To_Timestamp('2005010112303000', 'YYYYMMDDHH24MISSFF'));<br />
insert into TEST values(To_Timestamp('20050101123030123', 'YYYYMMDDHH24MISSFF'));<br />
insert into TEST values(To_Timestamp('2005010112454500', 'YYYYMMDDHH24MISSFF'));<br />
insert into TEST values(To_Timestamp('20050101124545123', 'YYYYMMDDHH24MISSFF'));
----------------
On C# App :
----------------
OracleCommand ocmd = this.oracleConnection2.CreateCommand();<br />
ocmd.CommandText = "SELECT * FROM TEST ORDER BY TESTTIMESTAMP";<br />
this.oracleConnection2.Open();<br />
OracleDataReader ord = ocmd.ExecuteReader();<br />
while (ord.Read())<br />
{<br />
DateTime testTimeStamp = (DateTime)ord["TESTTIMESTAMP"];<br />
Console.WriteLine("RESULT : " + testTimeStamp.ToString("dd-MMM-yy hh.mm.ss.fffffff tt"));<br />
}<br />
ord.Close();<br />
this.oracleConnection2.Close();
---------------
And this is the value on the console output :
---------------
RESULT : 01-Jan-05 12.30.30.0000000 AM
RESULT : 01-Jan-05 12.30.30.1230000 AM
RESULT : 01-Jan-05 12.45.45.0015903 PM
RESULT : 01-Jan-05 12.45.45.1230000 PM
---------------
I don't know where that fraction in result number 3 come from?
Anybody can help me pls?
|
|
|
|
|
Hi All,
Anyone ever put together a DB using GUID's for the PK values? Any thoughts on the matter? My client is interested in using GUID's as the PK so that clients can work disconnected from the server's DB, so as to avoid auto-increment identity collisions when merging the tables. There's other reasons too, but they get really involved in the architecture.
Marc
MyXaml
Advanced Unit Testing
YAPO
|
|
|
|
|
Well, I never actually use true "auto-increment" fields because they can be problematic for a variety of reasons. Instead I write my own routines to assign a unique auto-increment style key.
Using a GUID certainly guarantees a unique key. My big question would be how it affects performance. I don't know - you could do some tests maybe. But my uneducated guess would be that if the data tables get pretty large, indexing on a 128 bit value could make things start to really grind when working with a large data set.
Robert
|
|
|
|
|
It works like a charm!
We have a database with about 100 tables, all of which have GUIDs as their primary key.
In order to improve performance, we use a special form of GUID we call "Smart GUID" internally. We found this information somewhere on the web [^]. Basically, the GUID is generated based on the date/time of the client machine. It helps sorting and indexing things because it groups rows created around the same time together. It improves indexing drastically.
Anyway, here's the code we came up with.
<br />
<br />
using Microsoft.VisualBasic;<br />
using System;<br />
using System.Collections;<br />
using System.Data;<br />
using System.Diagnostics;<br />
namespace AdonisTech.Adonis2005.Core.Business {<br />
[ Serializable() ]<br />
public sealed class SmartGuid { <br />
private System.Guid mGuid; <br />
<br />
public SmartGuid() { <br />
mGuid = NewComb(); <br />
} <br />
public SmartGuid( byte[] b ) { <br />
mGuid = new Guid( b ); <br />
} <br />
public SmartGuid( UInt32 a, UInt16 b, UInt16 c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k ) { <br />
mGuid = new Guid( a, b, c, d, e, f, g, h, i, j, k ); <br />
} <br />
public SmartGuid( string g ) { <br />
mGuid = new Guid( g ); <br />
} <br />
public SmartGuid( int a, short b, short c, byte[] d ) { <br />
mGuid = new Guid( a, b, c, d ); <br />
} <br />
public SmartGuid( int a, short b, short c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k ) { <br />
mGuid = new Guid( a, b, c, d, e, f, g, h, i, j, k ); <br />
} <br />
<br />
public override int GetHashCode() { <br />
return mGuid.GetHashCode(); <br />
} <br />
<br />
<br />
public override bool Equals( object o ) { <br />
return mGuid.Equals( o ); <br />
} <br />
<br />
public static bool Equals( object objA, object objB ) { <br />
return System.Guid.Equals( objA, objB ); <br />
} <br />
<br />
<br />
public int CompareTo( object value ) { <br />
return mGuid.CompareTo( value ); <br />
} <br />
<br />
<br />
public override string ToString() { <br />
return mGuid.ToString(); <br />
} <br />
<br />
public string ToString( string format ) { <br />
return mGuid.ToString( format ); <br />
} <br />
<br />
public string ToString( string format, System.IFormatProvider provider ) { <br />
return mGuid.ToString( format, provider ); <br />
} <br />
<br />
<br />
public static System.Guid NewGuid() { <br />
return NewComb(); <br />
} <br />
<br />
private static Guid NewComb() { <br />
byte[] guidArray = System.Guid.NewGuid().ToByteArray(); <br />
DateTime baseDate = new DateTime( 1900, 1, 1 ); <br />
DateTime now = DateTime.Now; <br />
<br />
TimeSpan days = new TimeSpan( now.Ticks - baseDate.Ticks ); <br />
TimeSpan msecs = new TimeSpan( now.Ticks - ( new DateTime( now.Year, now.Month, now.Day ).Ticks ) ); <br />
<br />
<br />
byte[] daysArray = BitConverter.GetBytes( days.Days ); <br />
byte[] msecsArray = BitConverter.GetBytes( System.Convert.ToInt64( msecs.TotalMilliseconds / 3.333333 ) ); <br />
<br />
Array.Reverse( daysArray ); <br />
Array.Reverse( msecsArray ); <br />
<br />
Array.Copy( daysArray, daysArray.Length - 2, guidArray, guidArray.Length - 6, 2 ); <br />
Array.Copy( msecsArray, msecsArray.Length - 4, guidArray, guidArray.Length - 4, 4 ); <br />
<br />
return new System.Guid( guidArray ); <br />
} <br />
<br />
<br />
public DateTime GetDateTime() { <br />
return GetCombDateTime( mGuid ); <br />
} <br />
<br />
public static DateTime GetDateTime( Guid o ) { <br />
return GetCombDateTime( o ); <br />
} <br />
<br />
<br />
private static DateTime GetCombDateTime( Guid guid ) { <br />
DateTime baseDate = new DateTime( 1900, 1, 1 ); <br />
byte[] daysArray = new byte[ 5 ]; <br />
byte[] msecsArray = new byte[ 5 ]; <br />
byte[] guidArray = guid.ToByteArray(); <br />
<br />
Array.Copy( guidArray, guidArray.Length - 6, daysArray, 2, 2 ); <br />
Array.Copy( guidArray, guidArray.Length - 4, msecsArray, 0, 4 ); <br />
<br />
Array.Reverse( daysArray ); <br />
Array.Reverse( msecsArray ); <br />
<br />
int days = BitConverter.ToInt32( daysArray, 0 ); <br />
int msecs = BitConverter.ToInt32( msecsArray, 0 ); <br />
<br />
DateTime myDate = baseDate.AddDays( days ); <br />
myDate = myDate.AddMilliseconds( msecs * 3.333333 ); <br />
<br />
return myDate; <br />
} <br />
<br />
} <br />
<br />
} <br />
|
|
|
|
|
C a r l wrote:
Anyway, here's the code we came up with.
This looks great! Thanks for the info and the code example. We'll definitely make use of this!
Marc
MyXaml
Advanced Unit Testing
YAPO
|
|
|
|
|
In my experience generating the keys on the client to send to the server makes things much easier. The databases I've used it on have only had tables on the order of a million records per table and smaller, database size only several GB, so I can't say much about performance. The performance penalties for missing indexes usually dwarf those from data size anyway, so I wouldn't be too concerned.
They are espeically convienient for things like web applications where you want to eliminiate double post issues and things like that. Since you have a unique transaction ID, you can easily check that you aren't duplicating operations.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
|
|
|
|
|
Yes. I've done it both ways, and I definitely prefer using unique IDs to sequences/identity columns.
The reasons have been pretty well covered here. There are some minor drawbacks, such as making visual inspection of the data a little more difficult (e.g. you're trying to glance at a small sample of data to get an idea of how related records hang together), and it takes a little getting used to in that respect, but the benefits outweigh the aggravations for me.
The value of using a guaranteed "unique" id was underscored for me recently while I was working on a project using Oracle, which has no Guid type intrinsically. The designers had established sequences and insert triggers to keep the sequences incrementing however, after some 50,000 rows of data or so, one of the sequences got dropped and recreated with an arbitrary seed value lower than the highest previous sequence value. That was bad enough; what made it worse was that the code responsible for inserting rows into the affected table did not differentiate between inserts and updates. The method was passed a PK value (integer), which in the case of new records was the next value in the sequence, and for existing records was their current PK value. The logic was similar to:
1. Does that sequence value exist in the database?
2. If step 1 is False, insert a new record (correct behavior at all times)
3. If step 1 is True, update the record with the provided PK value with all of the data provided (this was a killer, since the renumbered sequence was now sometimes providing "used" PK values for new records, overwriting entire records inadvertently - it was even harder to locate the problem since deletions made "holes" in the tables PK range, so sometimes new records with out-of-sequence PKs would insert just fine).
Guids are goooood.
Hope this helps.
The most exciting phrase to hear in science, the one that heralds the most discoveries, is not 'Eureka!' ('I found it!') but 'That's funny...’
|
|
|
|
|
In MS SQL Server, PKs are clustered indexes, and GUID will be all over the map. This might affect insert performance greatly. I would probably use a simple incrementing integer PK and have the GUID as a unique constraint. When merging, it doesn't matter that the PK changes, because you can still query by GUID.
That said, I used GUID as PKs for a small project once and it worked OK.
|
|
|
|
|
For my SQL Server work, I alway use a guid uniqueidentifer for my primary keys, which are usually created as the default value for the column with newid()
I once used client side generated GUID's for primary keys on an Oracle DB system, as Oracle didn't support guid's as unique identifiers. As the system was for a large call centre and each unique incoming telephone call was given a unique guid in the database so that it could be linked back to a booking record in their reservation system.
My call tracking software generated a guid for each call and wrote a record to the tracking DB as the primary key, it would then attach the guid to the call and then the booking system would read the guid and store it in the oracle db. The records in the two different tables where then PK/FK linked.
Michael
CP Blog [^] Development Blog [^]
|
|
|
|
|
I used them between a central SQL Server and Remote Clients operating with MS Access. They solved the problem quite well.
Things to think about
=====================
(1) Key is 4 time larger therefore, slower joins on large tables. Less keys fit on each 8k page.
(2) They are a pain when dealing with some DB maintenance issues. It is difficult to hand fix a row if it is based on a GUID.
(3) Some aggregate commands don't work with Guids (i.e. MIN, MAX).
(4) You will loss insert order. I know you aren't supposed to rely on an Identities order but, I end up using it anyway when debugging some runtime issues. Just add a timestamp to solve this issue.
|
|
|
|
|
Marc,
Take a look at my reply to rwestgraham. I think it will be of interest for you.
Take it easy!
|
|
|
|
|
hi,
I already have the oracle installed in my pc my friend did it.I dont know the server name of this server.I am trying to access the tables in oracle but in order to know that I need to know the server name.Can anyone help me in finding the server name of the oracle already installed.
Thanking you in advance
Satish
|
|
|
|
|
I don't know anything about Oracle, so this could be completely wrong, but I would have thought the server name would be the same as the machine name. I'm guessing that the client software would attempt to find the Oracle database on a network and to do that it would need to know the name (or IP) of the machine that Oracle is running on and that machine name is also the server name. If Oracle supports multiple server processes on one machine each process may need a separate named instance.
Anyway, Just a thought you could try out. (Maybe "localhost", or 127.0.0.1 will work)
My: Blog | Photos | Next SQL Presentation
WDevs.com - Open Source Code Hosting, Blogs, FTP, Mail and More
|
|
|
|
|
I haven't used oracle since oracle 9, so this might be out of date. You need to find the tnsnames.ora file installed on your hard drive in the oracle install directory. This will have a list of all the server names that are registered and you have access to. Open this file in notepad to view all the registered server names.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
|
|
|
|
|
When i call a stored procedure to create a table named DETHI
The table DETHI create is owned by ASPNET account. But when i
executed a select statement(SELECT * FROM DETHI), SQL Server reported 'Invalid object named DETHI'
I can't solve this problem
Please help, thanks in advance
|
|
|
|
|
It may have created your table using the name aspnet.DETHI meaning the owner of the table is aspnet user.
Try specifying CREATE TABLE dbo.DETHI in your stored procedure or access the table using SELECT * FROM aspnet.DETHI.
Hope it helps,
Edbert
|
|
|
|
|