Ⅰ c怎麼把數據存到sql
1. C#中怎麼把數據保存到ACCESS資料庫
Sqlmand是操作sql資料庫的,Access用OleDbmand首先定義一個鏈接對象OleDbConnection conn = new OleDbConnection("[資料庫連接字元串]");conn.Open(); 打開資料庫連接OleDbmand cmd = new OleDbmand("[Insert/Update/Delte語句]", conn);cmd.ExecuteNonQuery(); 執行操作,如果是查詢則不是用這個方法 最後別忘記關閉資料庫連接和釋放對象。
2. C# 如何將 圖片直接存入SQL資料庫中
把文件轉成二進制流出入資料庫
private void button2_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream(textBox1.Text, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
Byte[] byData = br.ReadBytes((int)fs.Length);
fs.Close();
string conn = "server=.;database=testDB;Uid=sa;Pwd=sa ";
SqlConnection myconn = new SqlConnection(conn);
myconn.Open();
string str = "insert into pro_table (pro_name,pro_file) values('測試文件',@file)";
Sqlmand mym = new Sqlmand(str, myconn);
mym.Parameters.Add("@file", SqlDbType.Binary, byData.Length);
mym.Parameters["@file"].Value = byData;
mym.ExecuteNonQuery();
myconn.Close();
}
從資料庫中把二進制流讀出寫入還原成文件
private void button4_Click(object sender, EventArgs e)
{
string conn = "server=.;database=testDB;Uid=sa;Pwd=sa ";
string str = "select pro_file from pro_table where pro_name='測試文件' ";
SqlConnection myconn = new SqlConnection(conn);
SqlDataAdapter sda = new SqlDataAdapter(str, conn);
DataSet myds = new DataSet();
myconn.Open();
sda.Fill(myds);
myconn.Close();
Byte[] Files = (Byte[])myds.Tables[0].Rows[0]["pro_file"];
BinaryWriter bw = new BinaryWriter(File.Open("D:\\2.rdlc",FileMode.OpenOrCreate));
bw.Write(Files);
bw.Close();
}
3. c#如何把圖片存取到SQL資料庫
一樓開玩笑了!!可以保存到資料庫的。
首先,你的資料庫里要有一個存放二進制數據的欄位。然後,用一個文件選擇控制項,讓用戶選擇圖片。
用FileStream.Read把圖片文件按照二進制讀取到byte[]中,接下來,鏈接資料庫,用sql語句,進行相應的插入操作,將資料庫的二進制數據的欄位賦值為byte[]就行了。以下是保存和顯示的代碼:private void SaveImage(string fileName) { Read the file into a byte array using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { byte[] imageData = new Byte[fs.Length]; fs.Read(imageData, 0, (int)fs.Length); using (SqlConnection conn = new SqlConnection(connectionString)) { string sql = "insert into image (imagefilename,blobdata) values (@filename,@blobdata)"; Sqlmand cmd = new Sqlmand(sql, conn); cmd.Parameters.Add("@filename",SqlDbType.Text); cmd.Parameters["@filename"].Direction = ParameterDirection.Input; cmd.Parameters.Add("@blobdata", SqlDbType.Image); cmd.Parameters["@blobdata"].Direction = ParameterDirection.Input; Store the byte array within the image field cmd.Parameters["@filename"].Value = fileName; cmd.Parameters["@blobdata"].Value = imageData; conn.Open(); if (cmd.ExecuteNonQuery() == 1) { MessageBox.Show("Done"); } } } } private void LoadImage(string fileName) { using (SqlConnection conn = new SqlConnection(connectionString)) { string sql = "select blobdata from Image where ImageFileName like @filename"; Sqlmand cmd = new Sqlmand(sql, conn); cmd.Parameters.Add("@filename", SqlDbType.Text); cmd.Parameters["@filename"].Value = fileName; conn.Open(); object objImage = cmd.ExecuteScalar(); byte[] buffer = (byte[])objImage; BinaryWriter bw = new BinaryWriter(new FileStream("C:\\abcd.", FileMode.Create)); bw.Write(buffer); bw.Close(); MemoryStream ms = new MemoryStream(buffer); Image bgImage = Image.FromStream(ms); ms.Close(); this.BackgroundImage = bgImage; } } ------------------------------------------------------------------PS:用空情報我踩踩空間,謝謝。
/kxl361。
4. 如何將文件的路徑存入SQL資料庫中去
建一個表:JpgFiles,其中至少包含一個列:JpgPath,用來存放絕對路徑的字元串,所以這個列需要用varchar,長度假設為50,不夠的話自己再增加。
string strPath = @"d:\\up";
string[] fileNames = System.IO.Directory.GetFiles(strPath);
SqlConnection Cn=new SqlConnection(這里寫你的連接串);
Sqlmand Cmd=new Sqlmand("Insert JpgFiles values (@JpgPath)",Cn)
Cmd.Parameters.Add("@JpgPath",SqlDbType.VarChar,50);
foreach (string strName in fileNames)
{
Cmd.Parameters[0].Value=strName;
Cmd.ExecuteNoQuery();
}
5. 怎樣將數據存入mysql資料庫
MySQL命令行導出資料庫:
1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄
如我輸入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接將windows的環境變數path中添加該目錄)
2,導出資料庫:mysqlmp -u 用戶名 -p 資料庫名 >; 導出的文件名
如我輸入的命令行:mysqlmp -u root -p news > news.sql (輸入後會讓你輸入進入MySQL的密碼)
(如果導出單張表的話在資料庫名後面輸入表名即可)
3、會看到文件news.sql自動生成到bin文件下
命令行導入資料庫:
1,將要導入的.sql文件移至bin文件下,這樣的路徑比較方便
2,同上面導出的第1步
3,進入MySQL:mysql -u 用戶名 -p
如我輸入的命令行:mysql -u root -p (輸入同樣後會讓你輸入MySQL的密碼)
4,在MySQL-Front中新建你要建的資料庫,這時是空資料庫,如新建一個名為news的目標資料庫
5,輸入:mysql>use 目標資料庫名
如我輸入的命令行:mysql>use news;
6,導入文件:mysql>source 導入的文件名;
如我輸入的命令行:mysql>source news.sql;
6. 如何把文件存入到sql server 2008
1.MDF文件
在企業管理器中
右擊資料庫
點擊所有任務
附加資料庫
點三個點選擇文件
選中U盤中的MDF文件確定即可
2.BAK等備份文件:
新建空資料庫,取名最好為原資料庫名.
右擊新建的資料庫
點所有任務
點還原資料庫
點從設備
點選擇設備
點添加
定位到U盤中您的備份的文件
確定
點選項
點在現有資料庫上強制還原
點確定
等待
完成!
另外,站長團上有產品團購,便宜有保證
Ⅱ c中 使用嵌入式 SQL需要載入什麼頭文件和庫
嵌入式SQL程序的VC+SQL
server
2000實現的環境配置
嵌入SQL的C應用程序具體到VC++6.0,
SQL
Server2000
下調試可分為五步:1、環境初始化;2、預編譯;3、編譯;4、連接;5、運行。下面就其中重要的的操作方法給以詳細說明。
1、環境初始化
(1)
SQL
Server2000為其嵌入式SQL提供了一此特殊的介面;默認的安裝方式沒有安裝這此介面;因此,需要把devtools.rar解壓到SQLServer的系統日錄下(即文件夾devtools中的所有文件);如果操作系統安裝在C盤,則SQL
Server的系統目錄是C:\Program
Files\Microsoft
SQL
Server。(或
在安裝Microsoft
SQL
Server
2000時選擇安裝Development
Tools,為使用嵌入式SQL語言准備必要的頭文件和庫文件。)
(
2)初始化Visual
C++
6.0編譯器環境。在命令行方式下運行文件\Microsoft
Visual
Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL
Server的預編譯環境。在命令行方式下運行文件:\Devtools\samples\esqlc\setenv.bat。
(
4)
VC++6.0環境配置。具體配置分為如下三步[:
①Tools->options->directories->Include
Files:添加
C:\Program
Files\Microsoft
SQL
Server\devtools\include。將SQL
server自帶的用於資料庫開發的頭文件包含到工程環境中。
②Tools->options->directories->Lib
Files:添加C:\Program
Files\Microsoft
SQL
Server\devtools\x861ib。將開發用到的包包含到工程中。
③project->Settings->Link->Object/Library
Moles,添加庫文件:SQLakw32.lib,
Caw32.lib。這兩個文件之間用空格分開。
2、預編譯
c語言編譯程序不能識別應用程序中的SQL語句,需要經過預處理程序將其轉換成C語句。SQL
Server的預處理程序是nsqlprep.exe。
nsqlprep.exe在SQL
Server安裝日錄的MSSQL\Binn下。若SQL
Server資料庫採用的是默任安裝方式,則需要把binn.rar的內容拷貝到指定目錄下。
Microsoft
SQL
Server
2000提供的預編譯程序nsqlprep.exe,用於對嵌入式SQL程序進行預編譯處理,生成C語言源程序.實際上就是將嵌入式SQL程序中的嵌入式SQL語句替換為對運行時庫文件Sqlakw32.
dll的函數調用,接著運行時庫文件調用動態連接庫Ntwdblib.
dll通過網路來存取Microsoft
SQL
Server
2000資料庫伺服器.
預編譯程序nsqlprep的常用語法為:
nsqlprep
ESQL_File
/SQLACCESS
/DB
server_name.database_name
/PASS
login.password
其中ESQL_File是要預編譯的嵌入式SQL程序;/SQLACCESS通知nsqlprep自動地為嵌入式SQL程序中的靜態SQL語句創建相應的存儲過程;/DB
server_name.database_name指明要連接的伺服器以及資料庫名稱;/PASS
login.password給出登錄名及相應的口令.
下面的程序demo.sqc實現了從資料庫伺服器hushaobo的資料庫pubs中的authors表中讀取au_lname為white的人對應的
au_fname
值,並保存到變數first_name
中顯示出來。(連接資料庫的用戶為sa,對應密碼為1982)
#include<stdio.h>
void
main()
{
EXEC
SQL
BEGIN
DECLARE
SECTION;
char
first_name[40];
char
last_name[]="White";
EXEC
SQL
END
DECLARE
SECTION;
EXEC
SQL
CONNECT
TO
hushaobo.pubs
USER
sa.1982;
EXEC
SQL
SELECT
au_fname
INTO
:first_name
from
authors
WHERE
au_lname
=
:last_name;
EXEC
SQL
DISCONNECT
ALL;
printf("first
name:
%s
\n",first_name);
}
在命令行下運行:nsqlprep
demo.sqc
/SQLACCESS
/DB
hushaobo.pubs
/PASS
sa.1982
則生成demo.c,將該文件添加到VC工程中編譯即可。
3、編譯,連接與運行
在VC++6.0中創建一個
"WIN32
Console
Application"的Proiect,然後將預編譯生成的c文件加入Proiect,編譯連接即可生成訪問SQL
Server的可執行程序。
Visual
C++
6.0進行編譯連接時需要用到動態鏈接庫SQLakw32.d11與SQLaiw32.d11;盡管這兩個文件已經隨同binn.rar被拷貝到SQLServer安裝目錄的MSSQL\Binn文件夾下,但仍然需要把它們的路徑加到系統路徑變數中,以使得程序運行時能找到它們,具體添加方法如下:
方法1:把這兩個文件拷貝到操作系統目錄下的system32子目錄中。
方法2:我的電腦->屬性->高級->環境變數->path->編輯,在變數值中加入路徑值;新路徑與已有路徑間用;間隔。
注意調適程序時,文件名中不要包含cursor,否則可能會出錯。
Ⅲ c語言中嵌入sql
很多人用到MySQL來開發一些項目,有時為了性能,我們會直接用C語言來開發相關的模塊,尤其在我們的web應用中,雖然PHP、JSP等腳本均提供了MySQL的介面,但是顯然直接使用C語言具有更好的安全性和性能,Michael以前用PHP開發的多個項目中就使用了C語言編寫的這類介面,然後再編譯到php裡面,供php腳本直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連接MySQL資料庫,並且讀取裡面的數據返回,同時如何進行編譯。
這里的大部分代碼參考了MySQL發行包裡面的.c源文件,大家也可以去裡面找找相關的代碼,下面這段代碼實現了連接到本地MySQL伺服器上9tmd_bbs_utf8資料庫,從數據表tbb_user中根據輸入的userid取得該用戶的用戶名並列印輸出到終端。
#if defined(_WIN32) || defined(_WIN64) //為了支持windows平台上的編譯
#i nclude
#endif
#i nclude
#i nclude
#i nclude "mysql.h" //我的機器上該文件在/usr/local/include/mysql下
//定義資料庫操作的宏,也可以不定義留著後面直接寫進代碼
#define SELECT_QUERY "select username from tbb_user where userid = %d"
int main(int argc, char **argv) //char **argv 相當於 char *argv[]
{
MYSQL mysql,*sock; //定義資料庫連接的句柄,它被用於幾乎所有的MySQL函數
MYSQL_RES *res; //查詢結果集,結構類型
MYSQL_FIELD *fd ; //包含欄位信息的結構
MYSQL_ROW row ; //存放一行查詢結果的字元串數組
char qbuf[160]; //存放查詢sql語句字元串
if (argc != 2) { //檢查輸入參數
fprintf(stderr,"usage : mysql_select \n\n");
exit(1);
}
mysql_init(&mysql);
if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) {
fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));
perror("");
exit(1);
}
sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));
if(mysql_query(sock,qbuf)) {
fprintf(stderr,"Query failed (%s)\n",mysql_error(sock));
exit(1);
}
if (!(res=mysql_store_result(sock))) {
fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock));
exit(1);
}
printf("number of fields returned: %d\n",mysql_num_fields(res));
while (row = mysql_fetch_row(res)) {
printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ;
puts( "query ok !\n" ) ;
}
mysql_free_result(res);
mysql_close(sock);
exit(0);
return 0; //. 為了兼容大部分的編譯器加入此行
}
編譯的時候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況
運行的時候,執行下面的命令
./mysql_select 1
將返回如下結果:
number of fields returned: 1
Ther userid #1 's username is: Michael
query ok !
Ⅳ 學了c語言,學了sql資料庫操作語言,能在c語言中插入sql嗎需要介面嗎
資料庫操作一般會提供專門的介面來調用。
找到提供c本版的介面。函數中調用介面。sql語句是字元串的形式輸入的在c語言中。
Ⅳ c++語句中如何嵌入SQL語句
在標准sql語句里,使用到聚集函數。如
select
no,sum(score),avg(score)
from
stu_score
那麼在嵌入到C++裡面時。strsql="select
no,sum(score),avg(score)
from
stu_score"這么直接用。
Ⅵ 關於C語言連接SQL資料庫…
1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void main()
{
HENV henv; //環境句柄
HDBC hdbc; //數據源句柄
HSTMT hstmt; //執行語句句柄
unsigned char datasource[]="數據源名稱"; //即<a href="https://www..com/s?wd=ODBC&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">ODBC</a>源中設置的源名稱
unsigned char user[]= "用戶名"; //資料庫的帳戶名
unsigned char pwd[]= "密碼"; //資料庫的密碼
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //記錄各SQL函數的返回情況
// 分配環境句柄
retcode= SQLAllocEnv(&henv); // 等介於 SQLAllocHandle(SQL_HANDLE_ENV, SQL_<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>_HANDLE, &henv);
// 設置ODBC環境版本號為3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配連接句柄
retcode= SQLAllocConnect(henv,&hdbc); // 等介於 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
//直接連接數據源
// 如果是windows身份驗證,第二、三參數可以是<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>,也可以是任何字串
//SQL_NTS 即 "<a href="https://www..com/s?wd=Null&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">Null</a>-Terminated String"
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配語句句柄
retcode= SQLAllocStmt(hdbc,&hstmt); // 等介於 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//直接執行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數據緩沖區綁定資料庫中的相應欄位(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍歷結果集到相應緩沖區 queryData
SQLFetch(hstmt);
/*
*對遍歷結果的相關操作,如顯示等
*/
//注意釋放順序,否則會造成未知錯誤!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
代碼看上去很復雜,其實都可以直接復制。其中需要改的是數據源名稱、資料庫用戶名、資料庫密碼和SQL語句。
然後就是SQLFetch後得到結果集後,如何使用的問題了。
在下面的注釋部分 填寫你的處理代碼即可。
/*
*對遍歷結果的相關操作,如顯示等
*/
Ⅶ 互動式SQL與嵌入式SQL有什麼不同
1、語言不同
互動式SQL是指在終端交互方式下使用的SQL語言稱為互動式SQL;嵌入式SQL是一種將SQL語句直接寫入C語言,COBOL,FORTRAN, Ada等編程語言的源代碼中的方法。
2、使用不同
互動式SQL是在終端交互方式下使用;嵌入式SQL是嵌入在高級語言的程序中使用。
(7)c中嵌入sql擴展閱讀:
提供對於嵌入式SQL的支持,需要資料庫廠商除了提供DBMS之外,還必須提供一些工具。為了實現對於嵌入式SQL的支持,技術上必須解決以下4個問題:
1、宿主語言的編譯器不可能識別和接受SQL文,需要解決如何將SQL的宿主語言源代碼編譯成可執行碼;
2、宿主語言的應用程序如何與DBMS之間傳遞數據和消息;
3、如何把對數據的查詢結果逐次賦值給宿主語言程序中的變數以供其處理;
4、資料庫的數據類型與宿主語言的數據類型有時不完全對應或等價,如何解決必要的數據類型轉換問題。
嵌入式SQL源碼的處理流程 為了解決上述這些問題,資料庫廠商需要提供一個嵌入式SQL的預編譯器,把包含有嵌入式SQL文的宿主語言源碼轉換成純宿主語言的代碼。
這樣一來,源碼即可使用宿主語言對應的編譯器進行編譯。通常情況下,經過嵌入式SQL的預編譯之後,原有的嵌入式SQL會被轉換成一系列函數調用。因此,資料庫廠商還需要提供一系列函數庫,以確保鏈接器能夠把代碼中的函數調用與對應的實現鏈接起來。
Ⅷ 怎樣使C語言里嵌入SQL語言急!急!
資料庫會提供訪問方式, 例如ODBC和API。在C語言中將SQL語句封裝後傳給ODBC或API由他們完成對資料庫的操作。SQL語句不是直接「嵌入」到C語言里的。
具體方法要查看不同資料庫的開發文檔。