[seasar-dotnet:2353] Re: QuillでのSQLServerの接続について
竹内学
[E-MAIL ADDRESS DELETED]
2014年 3月 28日 (金) 09:11:54 JST
竹内です。
APS.NET ではなくて、クラサバ・アプリなので、あまり参考にはならないかもしれませんが...
私の場合は、直接、設定ファイルに記述するのでは無くて IConnectionString を実装したクラスで接続文字列を生成する様にしております。
# やっぱり、パスワードが平文で記述されるのは抵抗があるので。
-- App.config --
<quill>
<dataSources>
<dataSource name="DataSource">
<provider>SqlServer</provider>
<connectionString>xxx.Helpers.ConnectionStringHelper</connectionString>
<class>Seasar.Extension.Tx.Impl.TxDataSource</class>
</dataSource>
</dataSources>
<configPath>App.dicon</configPath>
<assemblys>
<assembly>Seasar.DynamicProxy</assembly>
<assembly>Seasar.Dao</assembly>
<assembly>Seasar.Dxo</assembly>
<assembly>Seasar.Windows</assembly>
<!-- Microsoft SQL Server .NET Data Provider を使用する場合に必要です。 -->
<!--<assembly>System.Data</assembly>-->
</assemblys>
</quill>
<userSettings>
<xxx.Properties.Settings>
<setting name="DatabaseDataSource" serializeAs="String">
<value>localhost\SQLEXPRESS</value>
</setting>
<setting name="DatabasePort" serializeAs="String">
<value>1433</value>
</setting>
<setting name="DatabaseInitialCatalog" serializeAs="String">
<value>xxx</value>
</setting>
<setting name="DatabaseUserID" serializeAs="String">
<value>xxx</value>
</setting>
<setting name="DatabasePassword" serializeAs="String">
<value>xxx</value>
</setting>
</InventoryVerification.Properties.Settings>
</userSettings>
-- ConnectionStringHelper.cs --
namespace xxx.Helpers {
/// <summary>
/// データベース接続文字列ヘルパー クラス
/// </summary>
public class ConnectionStringHelper: IConnectionString {
/// <summary> /// データベースへの接続文字列を取得する
/// </summary>
/// <returns>接続文字列</returns>
public string GetConnectionString() {
SqlConnectionStringBuilder builder = new
SqlConnectionStringBuilder();
builder.ApplicationName = "xxx";
builder.DataSource = string.Format("tcp:{0},{1}",
Properties.Settings.Default.DatabaseDataSource,
Properties.Settings.Default.DatabasePort);
builder.InitialCatalog =
Properties.Settings.Default.DatabaseInitialCatalog;
builder.UserID =
Properties.Settings.Default.DatabaseUserID;
builder.Password =
DecryptPassword(Properties.Settings.Default.DatabasePassword);
return builder.ConnectionString;
}
}
これで生成される接続文字列は
Data Source=tcp:localhost\SQLEXPRESS,1433;Initial Catalog=xxx;User
ID=xxx;Password=xxx;Application Name=xxx
となっています。
ご参考までに。
2014年3月28日 2:22 kubo <dbflute @ gmail.com>:
> 久保(jflute)です
>
> 志水さん、こんにちは。
> DBFlute.NETご利用ありがとうございます。
>
> ちょっと.NET <http://xn--h9jep6j.NET>でSQLServerにつないでる環境が手元にないので、
> 見ただけでは合ってるかどうか不明なのですが、
> JDBCとか他からうまくいってるということは、
> もう Quill.config の書き方と考えるのが自然ですが...
>
> ポート番号って、指定しなくてもOKなんですよね?
> (以下のサイトを参考にしただけですが、
> 色々な書き方を試してみたいところですね)
> http://shiba-yan.hatenablog.jp/entry/20110103/1294060564
>
>
> # どなたか、.NETでSQLServerにDBアクセスされている方で、
> # 「接続文字列をこんな感じで書いてるよ」
> # みたいな情報ありましたらコメント頂けると助かります。
>
>
>
> 2014-03-27 19:38 GMT+09:00 志水正幸 <ie2m-smz @ asahi-net.or.jp>:
> > お世話になっております。
> > 志水と申します。
> >
> > ASP.NETで開発しているのですが、
> > ORACLE接続していたプロジェクトをSQLServer接続に変更しています。
> > しかし、どうにも接続できずエラーとなってしまい
> > すっかりハマってしまいましたOrz
> > 何がいけないのか、どなたかご指摘いただけたらと思います。。
> > 変更箇所はdataSources部分だけでいいと思ったのですが
> > ORACLEの場合は、Oracle.DataAccessのDLLの参照が必要でしたが、
> > SQLServerも何か必要なのでしょうか?
> >
> >
> > ちなみに以下の設定でクライアントから、dbfluteのバッチでテーブル生成でき
> > ます。
> > map:{
> > ; driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
> > ; url = jdbc:sqlserver://192.168.1.49:1433;databaseName=db_11;
> > ; schema = dbo
> > ; user = user11
> > ; password = passwd
> > ; propertiesMap = map:{includeSynonyms=true}
> > ; variousMap = map:{
> > ; objectTypeTargetList=list:{TABLE;VIEW;SYNONYM}
> > ; tableExceptList = list:{prefix:MLOG$_}
> > }
> > }
> > クライアントのAccessからODBC経由で接続もできました。
> > でも、心配なので念のためDBサーバ上のIISにアプリを設置して動作させて
> > みましたが、同じように接続エラーになりました。
> >
> >
> > 【環境】
> > 開発OS:Windows7 64bit
> > DBサーバ:Windows2008std
> >
> > .NET ASP C# FrameWork4.0
> > SqlServer2012
> > Quill(s2container.net-1.4.0)
> > dbflute-0.8.9.54
> >
> >
> > 【エラーメッセージ】
> > 場所 Seasar.Framework.Util.DataSourceUtil.GetConnection(IDataSource
> > dataSource)
> >
> > [NextException]
> > System.Data.DataException
> > コネクションのオープンに失敗しました。データベースは起動しているか?接続
> > 文字列、プロバイダの設定は正しいか?ご確認をお願いします。
> >
> > [NextNextException]
> > System.Data.SqlClient.SqlException
> > SQL Server への接続を確立しているときにネットワーク関連またはインスタン
> > ス固有のエラーが発生しました。サーバーが見つからないかアクセスできませ
> > ん。インスタン ス名が正しいこと、および SQL Server がリモート接続を許可
> > するように構成されていることを確認してください。 (provider: SQL Network
> > Interfaces, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定
> > しているときにエラーが発生しました)
> > ErrorCode = -2146232060
> >
> >
> > 【Quill.configの接続文字列】
> > <dataSources>
> > <dataSource name="WebDS"> ←このデータソースを読んでいるのは確認済み
> > <provider>SqlServer</provider>
> > <connectionString>"Data
> > Source=192.168.1.49\MSSQLSERVER;database=db_11;User
> > ID=user11;Password=passwd"</connectionString>
> > <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
> > </dataSource>
> > </dataSources>
> >
> > →"Server=192.168.1.49\MSSQLSERVER;Database=db_11;User
> > ID=user11;Password=passwd"
> > ↑↑↑接続文字列もためしましたがダメでした↑↑↑
> >
> > →IntegratedSecurity=trueつけたらサポートされていないって怒られました。
> >
> > →192.168.1.49の後ろの「\」を「\\」でも試してみましたが同じエラーでした。
> >
> > <assemblys>
> > <assembly>Seasar</assembly>
> > <assembly>Seasar.Dao</assembly>
> > <!-- Oracle Data Provider for .NET を使用する場合に必要です。 -->
> > <!-- <assembly>Oracle.DataAccess, version=2.112.1.0, Culture=neutral,
> > PublicKeyToken=89b483f429c47342</assembly> -->
> > </assemblys>
> >
> >
> > _______________________________________________
> > seasar-dotnet mailing list
> > seasar-dotnet @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
>
--
竹内 学 <mailto:mtakeuchi @ ailesys.co.jp>
株式会社エールシステム
〒384-0083 長野県小諸市大字市665-9
Phone: 0267-25-5990
Facsimile: 0267-26-1324
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20140328/5c306a05/attachment.html>
seasar-dotnet メーリングリストの案内