您好:
如下程式碼,
我DEBUG 有看到她在跑 dataRow[i] = reader[i]; 這一段
但最後,回傳卻是 NULL,
請問是否哪一段有問題!
謝謝!
public Object doexecZ(object[] objParam)
{
string paraX = (string)objParam[0];
JArray jarr = JArray.Parse(paraX);
string dlvno = "";
string[] rtn_X;
string retval = ""; // 要回前端的值
string _db = this.GetClientInfo(ClientInfoType.LoginDB).ToString(); //抓取client端登入的DB
_Conn = doConn.GetWebConnStr(_db); //將回傳的參數(連線哪個DBString)帶入_Conn中
SqlConnection conn = new SqlConnection(_Conn);
SqlCommand cmd = new SqlCommand(string.Empty, conn);
conn.Open();
SqlParameter rtn;
//------回傳陣列用
DataSet ds = new DataSet("dataSet"); //建立DataSet
// DataTable table = new DataTable(); //建立DataTable
//DataSet加入Table
//ds.Tables.Add(table);
foreach (JObject json in jarr)
{
dlvno = json.GetValue("dlvno")?.ToString() ?? "";
cmd.Parameters.Clear();
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"select
* from xx
WHERE dlvno = @dlvno_para ";
cmd.Parameters.Add("@dlvno_para", SqlDbType.VarChar, 12).Value = dlvno;
int ct = 0;
CommandBehavior behavior = CommandBehavior.SequentialAccess;
IDataReader reader = cmd.ExecuteReader(behavior);
using (ds )
{
do
{
DataTable dtSchema = reader.GetSchemaTable();
DataTable dt = new DataTable();
if (dtSchema != null)
{
foreach (DataRow drow in dtSchema.Rows)
{
string columnName = System.Convert.ToString(drow["ColumnName"]);
DataColumn column = new DataColumn(columnName, (Type)(drow["DataType"]));
dt.Columns.Add(column);
}
}
while (reader.Read())
{
DataRow dataRow = dt.NewRow();
for (int i = 0; i <= reader.FieldCount - 1; i++)
{
dataRow[i] = reader[i];
Console.WriteLine(reader[i]);
}
dt.Rows.Add(dataRow);
ct++;
}
ds.Tables.Add(dt);
} while (reader.NextResult());
reader.Close();
}
if (ct ==0)
{
break; //非0,PROC 處理有問題,跳出
}//--if
}//---foreach
//---將剛才的資料轉成 STRING
string json_rtn = JsonConvert.SerializeObject(ds);
conn.Close();
conn.Dispose();
object ret;
ret = new object[] { 0, json_rtn }; //只能放在此處回傳
return ret;
}
我怎麼覺得你寫了好多,Linq只要用兩三行就能解決的事?
using Newtonsoft.Json;
protected void Page_Load(object sender, EventArgs e)
DataContext1 myDC = new DataContext1();
var data = (from p in myDC.MemberTable
where p.name.Contains("陳")
select p ).ToArray();
Response.Write(JsonConvert.SerializeObject(data));
Response.Flush();
Response.End();
}
重點不是如何轉json,而是你的資料....如果這麼辛苦從recordset轉dataset.datatable,會不會太辛苦了些?用Linq+Lambda不香嗎?
您好: 謝謝! 沒用過linQ, 且套裝模組不知可否用!
順便一問,是否有較前顯異動的 C# DATA 的關聯 與組合運用說明可分享?
你可以新增一個測試專案,伺服器管理員裡加入你要連接的資料庫(有精靈可設定),,再回到專案,在裡面新增一個Linq to SQL的項目,然後你會發現有個空白的畫面可以加入TABLE、STORED PROCEDURE、VIEW,就把你剛剛加入到伺服器管理員的DB-TABLE用滑鼠拉進來,然後你應該可以回到我最開頭的那段語法,而不要用record來兜語法了
至於套裝環境可不可以用?Linq 是內建的,其實很多領域都用上了Linq,不只是SQL,像是List、Array、甚至對實體可見物件也可以用Linq,如GridView、ListView,都可以用Linq來篩選你要的內容或做進一步的資料寫入,就看你如何用了