2012-04-08 15 views
1

VBをWebサービスとして使用してSQL Serverデータベーステーブルを使用してユーザーを認証する方法を教えていただけますか?私はこのVBコードを介してSQLサーバーに接続することができました。Webサービス:VBを使用してSQL Serverデータベーステーブルを使用してユーザーを認証する方法

Public Sub ConnectToSQL() 
     Dim con As New SqlConnection 
     Dim cmd As New SqlCommand 
     Try 
      con.ConnectionString = "Data Source=(local);Initial Catalog=TestDatabase;Persist Security Info=True;User ID=sa;Password=421" 
      con.Open() 
     Catch ex As Exception 
      MessageBox.Show("Error while connecting to SQL Server." & ex.Message) 
     Finally 
      con.Close() 'Whether there is error or not. Close the connection. 
     End Try 
    End Sub 

いずれか?ありがとうございます。

+0

通常の方法は、データベースへのWebサービスを認証することです。[信頼問題の委任](http://stackoverflow.com/questions/1981414/asp-net-windows-authentication-to-sql-server)のため、エンドユーザーをデータベースに認証することはほとんど不可能です。 – Andomar

+0

私は私の質問をクリアしていないかもしれませんが、単純に言えば、データベースにユーザーとそのパスワードを追加する必要があります(VBでこれを行うには上記のコードですか?)。ウェブサービス経由で? – AbdulAziz

答えて

2

まず、SQLサーバーとADO.Netの基本チュートリアルを行い、質問を投稿することをお勧めします。これは、あなたの概念を明確にするのに役立つだけでなく、より重点的で問題のある分野で助けを得ることができます。ちょっとした気持ちはなく、ちょうどあなたがプログラミングに慣れて欲しいだけです。 :)

ステップ1:

関連するデータベーステーブルを作成します。これにはusersテーブルとrolesなどの他のテーブルが含まれます。

EDIT: DBにテーブルを作成するためにSQLスクリプトを使用できます。以下のサンプルを見つけてください。

-- Sample Table Creation and Index Creation script for MCIS-4423 
-- This script is designed to be "re-runnable", but you need to be careful, 
-- Since this will DROP the table, which would be bad if it was an existing table with data 

-- Make sure you are in the correct database 
USE [AdventureWorks] 
GO 

-- Drop Check Constraint 
IF EXISTS (SELECT * FROM sys.check_constraints WHERE object_id = OBJECT_ID(N'[dbo].[CK_Team_TeamID]') AND parent_object_id = OBJECT_ID(N'[dbo].[Team]')) 
ALTER TABLE [dbo].[Team] DROP CONSTRAINT [CK_Team_TeamID] 
GO 

-- Drop Table 
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Team]') AND type in (N'U')) 
DROP TABLE [dbo].[Team] 
GO 

-- Create Table 
CREATE TABLE [dbo].[Team](
    [TeamID] [char](3) NOT NULL, 
    [TeamName] [varchar](20) NOT NULL, 
    [City] [varchar](50) NOT NULL, 
    [StateCode] [char](2) NULL, 
    [PostalCode] [char](5) NULL, 
CONSTRAINT [PK_Team] PRIMARY KEY CLUSTERED 
(
    [TeamID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 

-- Add Check Constraint 
ALTER TABLE [dbo].[Team] WITH CHECK ADD CONSTRAINT [CK_Team_TeamID] CHECK (([TeamID] like '[A-Z][A-Z][A-Z]')) 
GO 
ALTER TABLE [dbo].[Team] CHECK CONSTRAINT [CK_Team_TeamID] 
GO 

-- Drop index if it exists 
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Team]') AND name = N'IX_Team_TeamName') 
DROP INDEX [IX_Team_TeamName] ON [dbo].[Team] WITH (ONLINE = OFF) 
GO 

-- Add non-clustered index on StateCode column 
-- Use ONLINE = ON if you have Developer or Enterprise Edition 
-- Use MAXDOP = 2 (set to roughly 25% of the number of CPU cores to keep index creation from affecting performance) 
CREATE NONCLUSTERED INDEX [IX_Team_TeamName] ON [dbo].[Team] 
(
    [StateCode] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = ON, MAXDOP = 2, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 

このサンプルはhttp://sqlserverperformance.wordpress.com/2007/09/27/sample-table-and-index-creation-script-for-sql-server-2005/からコピーされ、その内容に関連するすべてのクレジットはそれを書いた作者に行くことに注意してください。

ステップ2:

書き込みSQLクエリはusernamepassword彼に基づいてユーザを検索します。あなたはパスワードの暗号化に行くかもしれませんが、それは現在の質問の対象外です。あなたは、クエリにパラメータを追加する方法を理解するためにSqlCommandドキュメントhereて読むことができ

SELECT username FROM users 
WHERE [email protected] and [email protected] 



EDIT:次のようにサンプルクエリができます。

ステップ3:あなたは、データベース内のusersレコードを作成できるように

WebMethod秒を追加します。データベーステーブルでINSERTのクエリを実行するにはSqlCommandを使用してください。

編集: VB.NetでWebサービスを書く方法のサンプルについてはhereを読んでください。また、SqlCommandを使用してSQLクエリを実行する方法については、すでにご存じのように、INSERTクエリについても同様の操作を行います。

ステップ4:

がユーザーを検証WebMethodを作成します。このためには、SqlCommandオブジェクトを使用して、手順2で作成したクエリを起動します。結果として行が得られた場合、そのユーザーは有効です。

編集:上記の手順を参照してください。これは自分で作成することができます。

私は十分明確です。

+0

ありがとうございます。私はすべてそれを私の心の中に持っており、ステップでは本当に助けになりますが、これらのステップにいくつかのコード例を教えてください。ありがとう – AbdulAziz

+0

私はサンプルを含めるために私の答えを編集しました。それが役に立つと思ったら、徹底的に読んで答えにしてください。 – AYK

+0

ご挨拶ありがとうございました – AbdulAziz

関連する問題