|
|
|
The type 'System.Data.SqlClient.SqlParameterCollection' has no constructors defined คืออะไรครับ |
|
|
|
|
|
|
|
คือว่าประกาศอย่างนี้ไม่ได้ งงครับช่วยที
|
|
|
|
|
Date :
2010-04-20 08:57:23 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SqlParameterCollection มันเป็น base abstract class หรือเปล่าครับ คือ
class ที่ไม่สามารถ constuctor ด้วยการ new ได้ แต่ใช้สำหรับเป็นส่วนประกอบของ class อื่น
อย่างเช่น class sqlcommand มันจะมี SqlParameterCollection เป็น object ย่อยที่ใช้สำหรับ
รวบรวม SqlParameter อะไรแบบนี้ ซึ่งเราจะเห็นมันเป็น property ตัวหนึ่ง คือ
Code (C#)
SqlCommand command= new SqlCommand(commandString, connection)
command.Paramters // <-- เจ้า Paramters เติม s นี่แหละคือ SqlParameterCollection
เวลาใช้งานถ้าอยากจะ new parameter ใหม่ก็ add แบบนี้ก็ได้
Code (C#)
SqlParameter parameter1 = new SqlParameter();
parameter1.ParameterName = "@ID";
parameter1.Value = 17;
parameter1.SqlDbType = SqlDbType.Int;
SqlCommand command= new SqlCommand(commandString, connection)
command.Paramters.Add(parameter1);
แต่ผมชอบแบบนี้
Code (C#)
SqlCommand command= new SqlCommand(commandString, connection)
command.Paramters.AddWithValue("@ID", 17); // <-- แบบนี้ recomment จาก framework 4
|
|
|
|
|
Date :
2010-04-20 09:53:21 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณคุณ tungman ครับ
คือผมเจอปัญหาว่า ผมนำ class ของ Oracle ที่ทำงานได้ไม่มีปัญหา เลยเอามาแปลงให้เป็น class ของ MSSQL
แล้วเกิดปัญหา ดังที่เห็นในภาพอะครับ ผมเจอกระทู้หนึ่งก็ Create ได้ https://www.thaicreate.com/dotnet/forum/038846.html ก็เลยงงมากครับ
ความตั้งใจคือจะเรียกใช้ class ประมาณนี้ครับ
Code (C#)
StringBuilder strSql = new StringBuilder();
strSql.AppendLine("SELECT * FROM Employees where EmployeeId = @EmpId ");
SqlParameterCollection Param = new SqlParameterCollection();
Param.Add("@EmpID", SqlDbType.Int).Value = 1;
DataSet Employee = MsSqlDatabase.GetData(strSql.ToString(), "Employee", connectionString,Param);
GridView1.DataSource = Employee;
GridView1.DataBind();
Code (C#)
public static DataSet GetData(string strCommandText, string strTableName, string strConnectionString, SqlParameterCollection ParameterCollection)
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strCommandText, strConnectionString);
foreach (SqlParameter param in ParameterCollection)
{
da.SelectCommand.Parameters.Add(param.ParameterName, param.SqlDbType).Value = param.Value;
}
try
{
da.Fill(ds, strTableName);
}
catch (Exception ex)
{
}
return ds;
}
public struct ExecuteReturn
{
public int intRowEffected;
ถามต่อถ้า Class ผมเป็นประมาณนี้ ถ้าไม่ใช้ SqlParameterCollection ใช้อะไรได้บ้างครับ ขอบคุณครับ
|
|
|
|
|
Date :
2010-04-20 10:36:46 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
using System.Data;
using System.Data.SqlClient;
Code (C#)
string sqlConnectionString = "your connection string";
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);
string sqlCommandString = "SELECT * FROM [Employees] WHERE [EmployeeId]=@EmpId";
SqlCommand sqlCommand = new SqlCommand(sqlCommandString, sqlConnection);
sqlCommand.Parameters.AddWithValue("@EmpId", 1);
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCommand);
DataSet Ds = new DataSet();
dataAdapter.Fill(Ds, "TableName");
GridView1.DataSource = Ds;
GridView1.DataBind();
|
|
|
|
|
Date :
2010-04-20 10:53:34 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขุดมาตอบสำหรับผู้ที่สนใจ
การประกาศ
Code (C#)
string sql = "SELECT performRating,goalRating FROM Rating_Mstr " +
" WHERE userId=@userId AND yy=@yy ";
SqlParameterCollection param = new SqlCommand().Parameters; //พระเอกตัวจริง
param.AddWithValue("userId", SqlDbType.VarChar).Value = (string)Request.QueryString["empId"];
param.AddWithValue("yy", SqlDbType.VarChar).Value = GetYear();
DataSet dsScore = new DbClass().GetDataByParam(sql, "tblScore", param);
Class GetData
Code (C#)
public DataSet GetDataByParam(string sql, string tblName,SqlParameterCollection parameters)
{
SqlConnection conn = new ConnectDB().connection();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
foreach (SqlParameter param in parameters)
{
da.SelectCommand.Parameters.AddWithValue(param.ParameterName, param.SqlDbType).Value = param.Value;
}
da.Fill(ds, tblName);
return ds;
}
|
ประวัติการแก้ไข 2010-11-17 15:56:44
|
|
|
|
Date :
2010-11-17 15:55:32 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|