2012年7月23日 星期一

[Android] 出現Your project contains error的莫名錯誤

抽空想要更新一下之前寫的Android app.
結果還沒改程式前先Run就得到 "Your project contains error ..."
然後專案名稱前出現一個紅色叉叉,但是底下的程式卻沒有任何錯誤的怪現象,

查了一下,原來問題出在 debug.keystore。
原來 debug 的 keystore 預設時間為一年,當超出一年就會出現過期的錯誤。

其解決方法很簡單就是將debug.keystore刪除後重新執行Eclipse就可以了,


該檔案放置位置可參考Eclipse的 【Windows】Preferences  Build 路徑

[Android] 更新 Android SDK Failed to rename 的錯誤

參考 http://alvinhyc.blogspot.tw/2012/02/eclipse-android-sdk-failed-to-rename.html


Failed to rename directory C:\Program Files\Android\android-sdk\platforms\android-xx to C:\Program Files\Android\android-sdk\temp\PlatformPackage.old01. 

  1. 關閉 Eclipse 以及 Android 模擬器
  2. 開啟命令工具列
  3. 切換工作目錄到 Andorid SDK 下的 tools 目錄,我的 SDK 環境是安裝在 c:\program files\android\android-sdk下,所以我輸入了 cd c:\program files\android\android-sdk\tools
  4. 輸入 android.bat 便會執行 Android SDK Manager,等它檢查完更新檔後點選 install 鈕就可以成功的更新到最新的 SDK 環境

2012年7月17日 星期二

[ASPNET] GridView : 刪除Button加入再次確認


GridView 刪除Button加入再次確認




呈現結果
由左至右分別為 ButtonFieldCommandFieldItemTemplate

ASPX:













程式碼:(需寫在GridViewRowDataBound 事件)
protected void GridView_Bal_RowDataBound(object sender, GridViewRowEventArgs e)
{
// ButtonField : 刪除
Button delBtn = (Button)e.Row.Cells[14].Controls[0];
delBtn.OnClientClick = "if (confirm('您確定要刪除此筆資料嗎?')==false) {return false;}";
delBtn = null;

//CommandField : 刪除
 ((Button)e.Row.Cells[15].Controls[0]).Attributes.Add("onclick", "if (confirm('您確定要刪除此筆資料嗎?')==false) {return false;}");

//ItemTemplate : 刪除
//已寫在aspx裡面的OnClientClick事件
}

[LINQ] Linq中的類似SQL LIKE用法

1. Linq To Sql類別 :


可以用SqlMethods.Like
如 from p in 資料庫物件 where SqlMethods.Like(p.欄位名稱,"%xxx%") select p




2. 一般Linq語法Contains, StartsWith, EndsWith



from a in 資料庫物件
where
a.欄位.Contains(字元或字串)




2012年7月13日 星期五

[C#] 手動設定EF的資料庫連線

在專案加入一個ADO.NET實體資料模型後,
.NET會在Web.config加上以下的連線資訊:
  <connectionStrings>
  <add name="LoLEntities" connectionString="… " providerName="System.Data.EntityClient" />
  </connectionStrings>

如果不想把連線字串寫在Web.config,可以考慮以下做法手動去設定連線。
比較重要的是,Entity的連線 (EntityConnectionStringBuilder) 一定要設定MetaData的位置 (如下圖)




可直接寫成如下的路徑,讓程式自己去尋找即可。(Web.config預設的寫法)
"res://*/Import.LoLModel.csdl|res://*/Import.LoLModel.ssdl|res://*/Import.LoLModel.msl"




private LoLEntities _lolEntities;
// Specify the provider name, server and database.
string sProvider = "System.Data.SqlClient";
string sServerName = "[Your Database Server Name/IP]";
string sDatabaseName = "XXX";

// Initialize the connection string builder for the
// underlying provider.
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();

// Set the properties for the data source.
sqlBuilder.DataSource = sServerName;
sqlBuilder.InitialCatalog = sDatabaseName;
sqlBuilder.IntegratedSecurity = false;
sqlBuilder.PersistSecurityInfo = true;
sqlBuilder.UserID = "[USER ID]";
sqlBuilder.Password = "[USER PASSWORD]";
sqlBuilder.MultipleActiveResultSets = true;

// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder =new EntityConnectionStringBuilder();

//Set the provider name.
entityBuilder.Provider = sProvider;

// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = sqlBuilder.ToString();

String sMetadata = string.Format(@"res://*/Import.LoLModel.csdl|res://*/Import.LoLModel.ssdl|res://*/Import.LoLModel.msl");

entityBuilder.Metadata = sMetadata;

//列印連線字串
 Console.WriteLine(entityBuilder.ToString());


//**************************************************
//測試連線
//**************************************************
using (EntityConnection conn =
    new EntityConnection(entityBuilder.ToString()))
{
    try
    {
        conn.Open();
        Console.WriteLine("測試連線");
        conn.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}


// Create an EntityConnection.
_lolEntities = new LoLEntities(new EntityConnection(entityBuilder.ToString()) );