2016-06-24 5 views
1

を使用してWebサービスに接続しようとするとき、私はこのエラー(複数可)を取得:エラーデータベース

エラーCS1502:「System.Data.SqlClient.SqlConnection.SqlConnection(文字列のための最良のオーバーロードされたメソッドが一致し、 System.Data.SqlClient.SqlCredential)」は、いくつかの無効な引数を持ってい

エラーCS1503:引数2:から変換できません 'System.Web.WebPages.HelperResult' から 'System.Data.SqlClient.SqlConnection'

これは私のコードです:

public string NumeroFactura(string NoDeFactura) 
{ 
     string DtsConnection = "ITLIGENCIA-POS\\SQLEXPRESS; Initial Catalog = SSOLINVBASESQL; Trusted_Connection = Yes"; 
     SqlConnection Con = new SqlConnection(DtsConnection); 
     Con.Open(); 

     SqlDataAdapter CMD = new SqlConnection("select * from INVE_FACTURAS_PRODUCTOS_ENC where NFACTURA='"+ NoDeFactura+ "'",Con); 
     DataSet DS = new DataSet(); 
     CMD.Fill(DS, "DATOS"); 

     DataTable TableNFACTURA = DS.Tables[0]; 
     string NFACTURA = TableNFACTURA.Rows[0]["NFACTURA"].ToString(); 

     return "El número de factura es" + NFACTURA; 
} 
+1

悪意のあるユーザーがNoDeFacturaに何らかのテキストを入力して、「blah」に入れるとどうなるか考えてみましょう。 DROP TABLE INVE_FACTURAS_PRODUCTOS_ENC; - ' –

+0

ちょっと考えました.C#では、ローカル変数やメソッドパラメータの名前を大文字にしないのが一般的です。タイトルケース(「DtsConnection」など)を使用すると、クラス名やメソッド名のように見えます。大文字(「NFACTURA」など)を使用すると、定数の名前のように見えます。キャメルケース(「dtsConnection」、「con」、「cmd」など)を使用すると、コードが読みやすくなります。 – jason44107

答えて

0

Data SourceまたはServerキーがありません。あなたの接続文字列は

SqlDataAdapter CMD = new SqlDataAdapter(...

また、 "SQLインジェクション" と "パラメータ化クエリを" 見上げる、あなたが何かをやっているかなり危険でなければなりません

Server=ITLIGENCIA-POS\\SQLEXPRESS; Initial Catalog = SSOLINVBASESQL; Trusted_Connection = Yes 
1

SqlDataAdapter CMD = new SqlConnection(...

のようになります。 。

私がそれをやっている間に、1行と1列を検索するのに、select *(とそのことについてはSqlDataAdapter)を使用することは非常に効率的ではありません。そしてあなたはあなたが行を取り戻すことを前提としています。 NoDeFacturaがデータベースに存在しない場合、TableNFACTURA.Rows[0]["NFACTURA"].ToString()はnull参照例外をスローします。

関連する問題