1. 如何讀出資料庫中的數據保存在fileupload控制項中
FileUpload控制項
FileUpload 控制項顯示一個文本框控制項和一個瀏覽按鈕,使用戶可以選擇客戶端上的文件並將它上載到 Web 伺服器。用戶通過在控制項的文本框中輸入本地計算機上文件的完整路徑(例如,C:\MyFiles\TestFile.txt)來指定要上載的文件。用戶也可以通過單擊「瀏覽」按鈕,然後在「選擇文件」對話框中定位文件來選擇文件。
用戶選擇要上載的文件後,FileUpload 控制項不會自動將該文件保存到伺服器。您必須顯式提供一個控制項或機制,使用戶能提交指定的文件。例如,可以提供一個按鈕,用戶單擊它即可上載文件。為保存指定文件所寫的代碼應調用 SaveAs 方法,該方法將文件內容保存到伺服器上的指定路徑。通常,在引發回發到伺服器的事件的事件處理方法中調用 SaveAs 方法。
在文件上傳的過程中,文件數據作為頁面請求的一部分,上傳並緩存到伺服器的內存中,然後再寫入伺服器的物理硬碟中。
有三個方面需要注意:
1.確認是否包含文件
在調用 SaveAs 方法將文件保存到伺服器之前,使用 HasFile 屬性來驗證 FileUpload 控制項確實包含文件。若 HasFile 返回 true,則調用 SaveAs 方法。如果它返回 false,則向用戶顯示消息,指示控制項不包含文件。不要通過檢查PostedFile 屬性來確定要上載的文件是否存在,因為默認情況下該屬性包含 0 位元組。因此,即使 FileUpload 控制項為空,PostedFile 屬性仍返回一個非空值。
2.文件上傳大小限制
默認情況下,上傳文件大小限制為 4096 KB (4 MB)。可以通過設置 httpRuntime 元素的 maxRequestLength 屬性來允許上載更大的文件。若要增加整個應用程序所允許的最大文件大小,請設置 Web.config 文件中的 maxRequestLength 屬性。若要增加指定頁所允許的最大文件大小,請設置 Web.config 中 location 元素內的 maxRequestLength 屬性。
上載較大文件時,用戶也可能接收到以下錯誤信息:
aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).
以上信息說明,上傳文件的大小不能超過伺服器內存大小的60%。這里的60%是Web。config文件的默認配置,是<processModel>配置節中的 memoryLimit 屬性默認值。雖然可以修改,但是如果上傳文件越大,成功幾率越小,不建議使用。
3.上傳文件夾的寫入許可權
應用程序可以通過兩種方式獲得寫訪問許可權。您可以將要保存上載文件的目錄的寫訪問許可權顯式授予運行應用程序所使用的帳戶。您也可以提高為 ASP.NET 應用程序授予的信任級別。若要使應用程序獲得執行目錄的寫訪問許可權,必須將 AspNetHostingPermission 對象授予應用程序並將其信任級別設置為 AspNetHostingPermissionLevel.Medium 值。提高信任級別可提高應用程序對伺服器資源的訪問許可權。請注意,該方法並不安全,因為如果懷有惡意的用戶控制了應用程序,他(她)也能以更高的信任級別運行應用程序。最好的做法就是在僅具有運行該應用程序所需的最低特權的用戶上下文中運行 ASP.NET 應用程序。
FileUpload控制項的常用屬性:
屬性
數據類型
說明
FileBytes
byte[]
獲取上傳文件的位元組數組
FileContent
Stream
獲取指定上傳文件的Stream對象
FileName
String
獲取上傳文件在客戶端的文件名稱
HasFile
Bool
獲取一個布爾值,用於表示FileUpload控制項是否已經包含一個文件
PostedFile
HttpPostedFile
獲取一個與上傳文件相關的HttpPostedFile對象,使用該對象可以獲取上傳文件的相關屬性
可以通過3種方法訪問上傳文件:
1.通過FileBytes屬性。該屬性將上傳文件數據置於位元組數組中,遍歷該數組,則能夠以位元組方式了解上傳文件的內容。
2.通過FileContent屬性。調用該屬性可以獲得一個指向上傳文件的Stream對象。可以使用該屬性讀取上傳文件數據,並使用FileBytes屬性顯示文件內容。
3.通過PostedFile屬性。調用該屬性可以獲得一個與上傳文件相關的HttpPostedFile對象,使用該對象可以獲得與上傳文件相關的信息。例如,調用HttpPostedFile對象的ContentLength,可以獲得上傳文件大小;調用HttpPostedFile對象的ContentType屬性,可以獲得上傳文件的類型;調用HttpPostedFile對象的FileName屬性,可以獲得上傳文件在客戶端的完整路徑(調用FileUpload控制項的FileName屬性,僅能獲得文件名)。
Show一個最基本的文件上傳示例:
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>示例8-3</title>
<link id="InstanceStyle" href="StyleSheet.css" type="text/css" rel="stylesheet" />
</head>
<body>
<form id="Form1" runat="server">
<div>
<fieldset style="width: 290px">
<legend class="mainTitle">FileUpload控制項典型應用</legend>
<br />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="BtnUpload" runat="server" Text="上傳" OnClick="BtnUpload_Click" />
<hr />
<asp:Label ID="LabMessage1" runat="server" ForeColor="red" /><br />
<asp:Label ID="LabMessage2" runat="server" />
</fieldset>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void BtnUpload_Click(object sender, EventArgs e)
{
bool fileOK = false;
string path = Server.MapPath("~/Temp/");
if (FileUpload1.HasFile)
{
String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
String[] allowedExtensions = { ".gif", ".png", ".bmp", ".jpg" };
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
}
if (fileOK)
{
try
{
FileUpload1.SaveAs(path + FileUpload1.FileName);
LabMessage1.Text = "文件上傳成功.";
LabMessage2.Text = "<b>原文件路徑:</b>" + FileUpload1.PostedFile.FileName + "<br />" +
"<b>文件大小:</b>" + FileUpload1.PostedFile.ContentLength + "位元組<br />" +
"<b>文件類型:</b>" + FileUpload1.PostedFile.ContentType + "<br />";
}
catch (Exception ex)
{
LabMessage1.Text = "文件上傳不成功.";
}
}
else
{
LabMessage1.Text = "只能夠上傳圖片文件.";
}
}
}
2. asp無法訪問access資料庫的問題
要解決的一個是iis64到32的問題, ,然後 解決asp.net 擴展的64位問題,只解決一個就失敗。
.單擊「開始」,單擊「運行」,鍵入 cmd,然後單擊「確定」。
2.鍵入以下命令啟用 32 位模式: cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3.鍵入以下命令,安裝 ASP.NET 2.0(32 位)版本並在 IIS 根目錄下安裝腳本映射: %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.40607\aspnet_regiis.exe -i
4.確保在 Internet 信息服務管理器的 Web 服務擴展列表中,將 ASP.NET 版本 2.0.40607(32 位)的狀態設置為允許。
cmd:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.40607\aspnet_regiis.exe -i
3. ASP.NET連接資料庫有哪幾種方法
連接Access
首先看一個例子代碼片斷:
程序代碼:
--------------------------------------------------------------------------------
using System.Data;
using System.Data.OleDb;
......
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;";
strConnection+=@"Data Source=C:\BegASPNET\Northwind.mdb";
OleDbConnection objConnection=new OleDbConnection(strConnection);
......
objConnection.Open();
objConnection.Close();
......
--------------------------------------------------------------------------------
解釋:
連接Access資料庫需要導入額外的命名空間,所以有了最前面的兩條using命令,這是必不可少的!
strConnection這個變數里存放的是連接資料庫所需要的連接字元串,他指定了要使用的數據提供者和要使用的數據源.
"Provider=Microsoft.Jet.OleDb.4.0;"是指數據提供者,這里使用的是Microsoft Jet引擎,也就是Access中的數據引擎,asp.net就是靠這個和Access的資料庫連接的.
"Data Source=C:\BegASPNET\Northwind.mdb"是指明數據源的位置,他的標准形式是"Data Source=MyDrive:MyPath\MyFile.MDB".
ps:
1."+="後面的"@"符號是防止將後面字元串中的"\"解析為轉義字元.
2.如果要連接的資料庫文件和當前文件在同一個目錄下,還可以使用如下的方法連接:
strConnection+="Data Source=";
strConnection+=MapPath("Northwind.mdb");
這樣就可以省得你寫一大堆東西了!
3.要注意連接字元串中的參數之間要用分號來分隔.
"OleDbConnection objConnection=new OleDbConnection(strConnection);"這一句是利用定義好的連接字元串來建立了一個鏈接對象,以後對資料庫的操作我們都要和這個對象打交道.
"objConnection.Open();"這用來打開連接.至此,與Access資料庫的連接完成.其餘操作(插入,刪除...)請參閱相關書籍
連接SQL Server
例子代碼片斷:
程序代碼:
--------------------------------------------------------------------------------
using System.Data;
using System.Data.SqlClient;
...
string strConnection="user id=sa;password=;";
strConnection+="initial catalog=Northwind;Server=YourSQLServer;";
strConnection+="Connect Timeout=30";
SqlConnection objConnection=new SqlConnection(strConnection);
...
objConnection.Open();
objConnection.Close();
...
--------------------------------------------------------------------------------
解釋:
連接SQL Server資料庫的機制與連接Access的機制沒有什麼太大的區別,只是改變了Connection對象和連接字元串中的不同參數.
首先,連接SQL Server使用的命名空間不是"System.Data.OleDb",而是"System.Data.SqlClient".
其次就是他的連接字元串了,我們一個一個參數來介紹(注意:參數間用分號分隔):
"user id=sa":連接資料庫的驗證用戶名為sa.他還有一個別名"uid",所以這句我們還可以寫成"uid=sa".
"password=":連接資料庫的驗證密碼為空.他的別名為"pwd",所以我們可以寫為"pwd=".
這里注意,你的SQL Server必須已經設置了需要用戶名和密碼來登錄,否則不能用這樣的方式來登錄.如果你的SQL Server設置為Windows登錄,那麼在這里就不需要使用"user id"和"password"這樣的方式來登錄,而需要使用"Trusted_Connection=SSPI"來進行登錄.
"initial catalog=Northwind":使用的數據源為"Northwind"這個資料庫.他的別名為"Database",本句可以寫成"Database=Northwind".
"Server =YourSQLServer":使用名為"YourSQLServer"的伺服器.他的別名為"Data Source","Address","Addr".如果使用的是本地資料庫且定義了實例名,則可以寫為"Server=(local)\實例名";如果是遠程伺服器,則將"(local)"替換為遠程伺服器的名稱或IP地址.
"Connect Timeout=30":連接超時時間為30秒.
在這里,建立連接對象用的構造函數為:SqlConnection.
其餘的就和Access沒有什麼區別了!
4. aspnet怎麼連接windows認證的sql資料庫
Data Source=localhost;Initial Catalog=cdshop;Integrated Security=True
loacalhost 是你要訪問的數據源地址
可填
. 或者 localhost 代表本機 (.\sqlexpress 代表sqlserver2005的本機)
機器名 或者IP地址 就是遠程伺服器了
cdshop改成你的資料庫名就可以了.
5. ASP.net SqlCe 許可權問題 不允許訪問資料庫文件
1.如果用 Network Service, 請將抄.sdf文件的用戶 添加襲 Network service, 並且 設置其許可權 是「 完全控制「 !
2.如果是你的應用程序標識 有 ApplicationPoolIdentity的話(應該是IIS 7.0以上才有)
設置這個更安全, 這樣 設置許可權的時候, 添加 用戶 iis apppool\你的網站名, 給予完全控制。
3. 看你的描述貌似這樣還不行, 那就是 sqlce的dll問題了, 檢查是 32位還是64的dll。
你可以設置 應用程序池為32位,64位 分別試一下
6. 在aspnet中怎麼連接oracle資料庫
在本機安裝oracle的客戶端(如果你是在oracle伺服器的本機上連接oracle資料庫此步驟省略),裝「運行時」就可以了,安裝完成後通過客戶端配置和Oracle的連接,比如連接名為attat。
然後你在網上隨便搜索一下連接oracle的連接字元串,將連接名改為attat就行了。剩下的就是你訪問資料庫的對應的對象問題了。前面准備就是這些。