|
qureshiaquib wrote: need some help
With what, exactly?
Add a reference to System.Windows.Forms, add a Form, run it in the main-method. And please, do use parameterized queries[^]. Without it, the entire idea of "security" becomes a bit useless. Google for "Little Bobby Tables" if you want to know why.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
|
As Eddy has mentioned, build a form with the text boxes, and reuse the appropriate code you have in the console app in the windows form app.
I understand you are learning right now, and the following is dangerous as it allows for SQL injection attacks:
SqlCommand command = new SqlCommand("SELECT * FROM [USERS] WHERE Username='" + username + "' AND Password ='" + password + "'" , connection);
You do not want to use string concatenation for building a query, but use parameterized queries instead. Take a look at SQL Injection Attacks and Some Tips on How to Prevent Them[^] to learn how to prevent them.
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
|
qureshiaquib wrote: Can you provide me an xample where i can understand the whole scenario
Nope. I am a college professor and it would be against my principles to just hand over a full-blown example, you would not learn much from it.
1. Design your form with your appropriate labels and text boxes (extra credit if you make the password text box **** out the password as it is typed in ), and a log in button.
2. Recycle/reuse your database connection code in which you can run the query after clicking the log in button.
3. If things don't work out well the first time, experiment around with it and use some creativity. You can do it
Also, you do not want to store passwords for the user in plain text inside the database. You might want to study up on cryptographic hash functions as well. I am leaving this for you to research and enrich your learning with.
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
qureshiaquib wrote: i am a student.learning programming in university
..as I'm reading it, you are doing the learning "here". Welcome to CodeProject University I guess
When is the assignment due? Any chance we could sneak in a short piece (using the CPVanity class) to deny users with a negative reputation access for the first two tries?
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
|
Read Meysams post, has given you a description of what needs to be done.
..and you should be able to do this within a week, it's not much code. Panicking won't help either, it's more a matter of sitting down, reading the post and Googling a lot
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
|
qureshiaquib wrote: what is meysam post?
Not a what, but a "whom". I was referring to a good answer to your question that has been sent to you by someone with that name[^].
Did you succeed in adding a reference to the project yet?
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
As mentioned -- definitely never concatenate your SQL statements -- use parameters.
Here's a link to another excellent article here that bears on your situation:
Password Storage: How to do it.[^]
I'll also mention that you should use a layered approach:
User Interface Layer -- You have the console app, you can write a WinForms app that uses the same layers beneath here.
Business Logic Layer -- encapsulates the logic of validating the login details (and other things) (SQL goes here).
Data Access Layer -- encapsulates the details of connecting to and interacting with the database.
Try it, learn it, live it -- you'll be way ahead of your classmates, and you'll become a chick magnet .
|
|
|
|
|
Excellent suggestion on the layers. Griff's article I second as well.
PIEBALDconsult wrote: be way ahead of your classmates, and you'll become a chick magnet
That is signature material right there
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
First do Right-Click on Project > References and add the Windows.Forms.dll to the project.
then you need to add the namespaces to your class.
After that right click on Project and select Properties; From "Application" tab set output type to "Windows Application".
Good Luck
Meysam
|
|
|
|
|
We have a customer running a new Windows 7/64 system.
Our 32 bit VB.NET 2008 application uses the MyODBC connector - DSNLESS.
However, for 1 particular Windows 7/64 customer only that we can see no matter which MyODBC connector we try we always get
-2147467259 Hex(80004005) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
We have tried 6 different versions. Both the 32 bit and 64 bits versions of 3.51, 5.1.11 and 5.1.8 (I believe). It always fails on her machine and never fails anywhere else. We have tried it on 3 different systems here and it always works.
Any ideas?
Thanks
|
|
|
|
|
QBTeKcom wrote: Any ideas?
Several, but very nothing useful.
- Is the connecter backed by a company? Do they have a helpdesk? Open source? Do they have a specialized forum?
- What does her eventlog say?
- Does it only reject local connections (suspect the local servers' settings) or also non-local connections? (suspect any client driver)
- Can you contact the server with any other tool?
- Are the versions of the dependencies of the plugin the same?
- Can she work temporary in a virtual machine?
- Verify the versions of both ODBC and MDAC?
- Considered testing with another data-provider?
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
See answers in bold
•Is the connecter backed by a company? Do they have a helpdesk? Open source? Do they have a specialized forum? It is from MySQL so I assume so but it is not the MyODBC module in question but the Windows system. It is a brand new laptop just 2 weeks old
•What does her eventlog say? I didn't see it yet
•Does it only reject local connections (suspect the local servers' settings) or also non-local connections? (suspect any client driver) Did not try. This is a remote db to Windows
•Can you contact the server with any other tool? I can connect to the same database from different windows - mine using same program. Next would be to try a little test program then maybe the MySQL Query Browser but the Query browser does not use the MyODBC driver
•Are the versions of the dependencies of the plugin the same? ??? Do not understand the question? What plugin? We have been doing this for 8 years. First the program was VB6 and now VB.Net 2008 and never had this before or on any other Windows.
•Can she work temporary in a virtual machine?No
•Verify the versions of both ODBC and MDAC? HOW?
•Considered testing with another data-provider?
How? This is a live eCommerce shopping cart database.
|
|
|
|
|
QuickBooksDev wrote: It is from MySQL so I assume so but it is not the MyODBC module in question but the Windows system.
Don't assume, verify. Windows itself has little to do with databases. It might be a different version of the driver, yes.
QuickBooksDev wrote: •Verify the versions of both ODBC and MDAC? HOW?
Try this[^] one.
QuickBooksDev wrote: I can connect to the same database from different windows - mine using same program. Next would be to try a little test program then maybe the MySQL Query Browser but the Query browser does not use the MyODBC driver
Sounds like
QuickBooksDev wrote: Are the versions of the dependencies of the plugin the same? ??? Do not understand the question?
The MySql client library, or connector, or provider or whateveritscalled, has dependencies on other software. Just like you reference libraries, so did they. Might be that some other application overwrote them with an incompatible version.
QuickBooksDev wrote: Did not try. This is a remote db to Windows
Aight, no need to check, since you already said that you can connect with another client.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Have you tried the program on other Windows 7/64 bit machines besides the customer's?
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
Yes, only fails on her's.
|
|
|
|
|
Sounds like something is goofy with the drivers on that specific machine. Good luck and if anything comes to mind, I'll let you know.
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
Using SQL Server 2008 R2 and SSIS, I just ran into a little problem. The source table has a VARCHAR column that contains mostly integers, also some NULLs, and some empty values. I'm copying rows to another table where the column is INTEGER, and SSIS is throwing:
[ADO NET Destination [16]] Error: An exception has occurred during data insertion, the message returned from the provider is: The given value of type String from the data source cannot be converted to type int of the specified target column.
After a few hours trying to narrow down what string value and which int column, I found that it is the empty strings causing the trouble.
I have now wrapped the troublesome columns in CASE statements to replace empties with NULLs, but here's my question:
If I execute the following in SSMS or via ADO.net
CREATE TABLE dbo.NumTest (Num int)
INSERT INTO dbo.NumTest VALUES ( '' )
no Exception is thrown -- the resultant value is 0.
So why the elephant does SSIS throw an Exception? Why is it trying to parse the string? Shouldn't it simply pass it to the database and react to any Exceptions?
And how can I tell SSIS not to interfere?
|
|
|
|
|
This is why we rip the T out of ETL, load the source into a staging table where every field is varchar and use a stored proc to do the transforms. SSIS is not alone in these idiotic inconsistencies, Biztalk and most of the big players in ETL also have them.
It is also way easier to debug and test the transforms using a proc!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I hear ya. This is my first time (eight months now) using SSIS and I don't like it. Previously I always used code. I'm doing a lot more pieces of this SSIS with "Script Tasks" -- C# code.
|
|
|
|
|
I had a class called filehandler, used in c# apps to load csv files, when we first started using SSIS I just hacked that class into the script objects, always intending to move to the SSIS data objects. It never actually happened, they are still using that class and a proc to do the transforms so SSIS is just an execution and scheduling shell.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
The problem you are experiencing is a data type issue. The source is varchar, which means SSIS read and mapped the source adaptor to varchar and its output column to varchar. Inserting that varchar into the int caused your problem.
To prevent this issue, in the data flow task -> Right click on the source -> scroll down to “Show Advanced Editor”
Select “Input and Output Properties”
Navigate down to “Output Columns”
Locate the column in question and change the data type to something more appropriate such as “four-byte signed integer [DT_I4]”
SSIS tries to guess what the source data type is and land it in the same data type without knowing everything in advance. SSMS builds the query first with the set of data then does the insert, so it knows to recast the data to the proper type.
You could also change the error handling of the destination object to ignore the error. While this works as well it could lead to other issues and is less than desirable.
Common sense is admitting there is cause and effect and that you can exert some control over what you understand.
|
|
|
|