c# SqlServer DbHelper類
阿新 • • 發佈:2019-02-18
DbHelper.cs
internal class DbHelper
{
public static String GetConnectionString(ConnectionStringPattern pattern)
{
String connectionString = String.Empty;
switch (pattern)
{
case ConnectionStringPattern.ByString:
connectionString = "Data Source=.;Initial Catalog=MyDatebase;Integrated Security=True" ;
break;
case ConnectionStringPattern.BySqlConnectionStringBuilder:
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
sqlBuilder.DataSource = ".";
sqlBuilder.InitialCatalog = "MyDatebase";
sqlBuilder.IntegratedSecurity = false ;
sqlBuilder.UserID = "sa";
sqlBuilder.Password = "Hn1234";
connectionString = sqlBuilder.ConnectionString;
break;
case ConnectionStringPattern.ByConfiguration:
connectionString = ConfigurationManager.ConnectionStrings["connectionString" ].ConnectionString;
break;
default:
throw new Exception("Pattern Error");
}
return connectionString;
}
public static SqlDataReader SqlReadExecute(String commendText, SqlParameter[] sqlParameter)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = DbHelper.GetConnectionString(ConnectionStringPattern.BySqlConnectionStringBuilder);
conn.Open();
SqlCommand command = new SqlCommand(commendText, conn);
if (sqlParameter != null)
{
command.Parameters.AddRange(sqlParameter);
}
Console.WriteLine("CommandText:" + command.CommandText);
try
{
SqlDataReader reader = command.ExecuteReader();
Console.WriteLine("讀取成功:");
return reader;
}
catch (Exception ex)
{
Console.WriteLine("讀取失敗:" + ex.Message);
return null;
}
}
public static void SqlWriteExecute(String commendText, SqlParameter[] sqlParameter)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = DbHelper.GetConnectionString(ConnectionStringPattern.BySqlConnectionStringBuilder);
conn.Open();
Console.WriteLine(conn.State.ToString());
SqlCommand command = new SqlCommand(commendText, conn);
if (sqlParameter != null)
{
command.Parameters.AddRange(sqlParameter);
}
Console.WriteLine("CommandText:" + command.CommandText);
try
{
int affectRows = command.ExecuteNonQuery();
if (affectRows > 0)
{
Console.WriteLine("操作成功:");
}
else
{
Console.WriteLine("操作失敗: 沒有找到要更改資料 ");
}
}
catch (Exception ex)
{
Console.WriteLine("操作失敗: 寫入失敗" + ex.Message);
}
}
}
}
//登入型別
public enum ConnectionStringPattern
{
ByString,
BySqlConnectionStringBuilder,
ByConfiguration
}
下面列舉兩個讀寫時的例子
public static void AddEmployee(Employee employee)
{
String commandText = "insert into staff(id,name,gender,department,job) values(@id,@name,@gender,@department,@job)";
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@id",SqlDbType.Int) { Value = employee.id},
new SqlParameter("@name",SqlDbType.VarChar) { Value = employee.name},
new SqlParameter("@gender",SqlDbType.VarChar) { Value = employee.gender},
new SqlParameter("@department",SqlDbType.VarChar){ Value = employee.department},
new SqlParameter("@job",SqlDbType.VarChar) { Value = employee.job}
};
DbHelper.SqlWriteExecute(commandText, paras);
}
public static void FindAllStaff()
{
string commandText = "select a.id,a.name,a.gender,a.department,a.job, b.name as chief from staff as a, staff as b,department where b.id in(select staffid from staff,manage where staff.department = manage.department and job = '科長')";
SqlParameter[] paras = null;
using (SqlDataReader reader = DbHelper.SqlReadExecute(commandText, paras))
{
while (reader.Read())
{
Console.Write(reader["id"] + " ");
Console.Write(reader["name"] + " ");
Console.Write(reader["gender"] + " ");
Console.Write(reader["department"] + " ");
Console.Write(reader["job"] + " ");
Console.Write(reader["chief"] + " ");
Console.WriteLine();
}
Console.WriteLine();
}
}
注:新增SqlParameter時要指定型別
如new SqlParameter(“@id”,SqlDbType.Int) { Value = employee.id}
如果寫成 new SqlParameter(“@id”,employee.id); 會報@id無法轉換成int的錯誤
參考 http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html