台灣最大程式設計社群網站
線上人數
774
 
會員總數:243167
討論主題:187984
歡迎您免費加入會員
討論區列表 >> C# >> 無法從 'string' 轉換成 'System.Data.SqlClient.SqlConnect
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
無法從 'string' 轉換成 'System.Data.SqlClient.SqlConnect
價值 : 10 QP  點閱數:209 回應數:7

樓主

Mike
門外漢
0 3
96 8
發送站內信

各位前輩,

我想從SQL 裡找到符合條件的資料,我依網路上參考文件的內容,依樣改寫,但一執行就會出現這一行指令錯誤:
SqlCommand cmd = new SqlCommand(Sqlstr, cnStr);

主要說明告知是說 引數 2: 無法從 'string' 轉換成 'System.Data.SqlClient.SqlConnection',不知是那裡錯誤,還請各位指點,謝謝



String cnStr = @"Data Source = TestSer; Initial Catalog = YCC_Project; Persist Security Info=True;User ID = aa; Password=xxxxxx";


try
{
SqlConnection conn = new SqlConnection(cnStr);
string Sqlstr = "Select * from MaintainD Where M_PN_SN=@p1";
SqlCommand cmd = new SqlCommand(Sqlstr, cnStr);
cmd.Parameters.AddWithValue("@p1", txM_PN2.Text);
SqlDataAdapter da = new SqlDataAdapter(Sqlstr, cnStr);
DataSet ds = new DataSet();
da.Fill(ds);
this.dgView_D.DataSource = ds.Tables[0].DefaultView;

}

catch (Exception ex)
{
MessageBox.Show(ex.Message);

}





搜尋相關Tags的文章: [ System.Data.SqlClient.SqlConnection ] ,
本篇文章發表於2018-08-13 15:53
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Fallenlog
檢舉此回應
SqlCommand(String, SqlConnection)
你的第二個引數,要帶入的應該是 SqlConnection...但是你直接給cnStr 這個字串....所以才會有這個錯誤
https://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx
可以參考msdn的說明。
本篇文章回覆於2018-08-13 16:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小魚
檢舉此回應
改成這樣

SqlConnection conn = new SqlConnection(cnStr)
SqlCommand cmd = new SqlCommand(Sqlstr, conn);
本篇文章回覆於2018-08-13 16:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Mike
檢舉此回應

2樓前輩,我依您的方式修改完成後,程式執行過程已經沒有問題了,但我在輸入資料作查詢時,
會出現 必需宣告量變數 "@p1" 訊息,我改用下列方式,也是同樣結東,請問 這是那是問題?
謝謝


cmd.Parameters.Add("@p1", SqlDbType.VarChar);
cmd.Parameters["@p1"].Value = txM_PN2.Text;

本篇文章回覆於2018-08-13 17:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
整段貼出來看看吧...
本篇文章回覆於2018-08-13 17:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Mike
檢舉此回應
前輩,您好

以下就是整段程式,請您指點下,謝謝

private void button1_Click(object sender, EventArgs e)
String cnStr = @"Data Source = TestSer; Initial Catalog = YCC_Project; Persist Security Info=True;User ID = aa; Password=xxxxxx";

try
{
SqlConnection conn = new SqlConnection(cnStr);
string Sqlstr = "Select * from MaintainD Where M_PN_SN=@p1";
SqlCommand cmd = new SqlCommand(Sqlstr, conn);
cmd.Parameters.AddWithValue("@p1", txM_PN2.Text);
SqlDataAdapter da = new SqlDataAdapter(Sqlstr, cnStr);
DataSet ds = new DataSet();
da.Fill(ds);
this.dgView_D.DataSource = ds.Tables[0].DefaultView;

}

catch (Exception ex)
{
MessageBox.Show(ex.Message);

}
本篇文章回覆於2018-08-14 08:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

小魚
檢舉此回應
你的cmd根本沒用到啊,
參數加到
da.SelectCommand.Parameters.AddWithValue
本篇文章回覆於2018-08-14 12:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Mike
檢舉此回應
己經可以找到資料了,因為才剛接觸C# 一個多月,還在學習中,非常感謝前輩指點,謝謝。
本篇文章回覆於2018-08-14 12:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.