>我有一个数据绑定方法将网格视图绑定到数据库。
private void BindGrid()
{
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select bookingId, bookingName, fprice from addCart");
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
con.Close();
}
由于我之前使用 base64 编码方法对 bookingId 和 bookingName 进行编码,因此网格视图中显示的数据仅显示编码值。如何添加 base64 解码方法,使其在网格视图中显示解码值?
我如何使用我的编码:
byte[] serviceEncode = System.Text.Encoding.Unicode.GetBytes(serviceLabel.Text);
sqlCmd.Parameters.AddWithValue("@bookingName", SqlDbType.VarChar).Value = Convert.ToBase64String(serviceEncode);
Database value: QgBpAGMAeQBjAGwAZQAmACMAMwAyADsA
我以前在我的项目模板中使用过 html 解码方法。我想知道是否有任何类似的已知方法可以使用base64进行解码?
<ItemTemplate>
<asp:Label ID="Label1" runat="server" decoding="base64" Text='<%# HttpUtility.HtmlDecode(Eval("bookingName").ToString()) %>'></asp:Label>
</ItemTemplate>
在数据表中运行 foreach 并使用解码值更新行
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select bookingId, bookingName, fprice from addCart");
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
//decode the bookingid and bookingname and update in table
if(dr["bookingName"].ToString()!=""){
string newbookingname = "";
try {
newbookingname = System.Text.Encoding.Unicode.GetString(Convert.FromBase64String(dr["bookingName"].ToString()));
}
catch(Exception e)
{
newbookingname = dr["bookingName"].ToString();
}
dr["bookingName"] = newbookingname;
}
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
con.Close();
和网格视图
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("bookingName") %>'></asp:Label>
</ItemTemplate>
~这个答案剂量没有直接的回答,只是一些推荐~
几个月前我遇到了这个问题,我曾经先转换数据,然后再使用它。
建议使用实体框架。
它比 ADO 更灵活。然后,您可以将 GUID 类型用于 ID,并且它很容易在任何地方显示。
对于使用EF,最好先使用数据库而不是编码,通过这项技术,您可以在Visual Studio中创建数据库,然后EF可以为您制作模型,BOOM的所有硬编码都被忽略
了通过使用控制器,您可以轻松地从数据库中获取和设置数据
您可以使用此函数:
base64_decode('QgBpAGMAeQBjAGwAZQAmACMAMwAyADsA');
替换此内容:
string newbookingname = Encoding.UTF8.GetString(Convert.FromBase64String(dr["bookingName"].ToString()));
有了这个:
string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(<"Your encoded string">);
您可以针对该错误参考此:如何编码和解码 base64 字符串?