主頁 > 軟體工程 > c++寫的前臺與資料庫成功連接后一使用SQL陳述句就崩潰

c++寫的前臺與資料庫成功連接后一使用SQL陳述句就崩潰

2020-09-26 03:57:38 軟體工程

新手,做課程設計,資料庫后臺的表寫好了,前臺用C++寫的簡陋的控制臺程式,在通過ODBC連接好之后,一使用SQL陳述句就會出現Runtime error    abnormal program termination.
以下是代碼,第一處觸發崩潰用紅色標注:


#include <windows.h> 
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <string> 
using std::string;
using namespace std; 
/*
C++連接SQL資料庫第一步 系統配置
1.設定SQLSERVER服務器為SQL登錄方式,并且系統安全性中的sa用戶要設定登錄功能為“啟用”,還有必須要有密碼。
2.需要在ODBC中進行資料源配置,資料源選\”SQL SERVER”,登錄方式使用“使用輸入用戶登錄ID和密碼的SQL SERVER驗證”,并填寫登錄名(sa)和密碼,注意一點,密碼不能為空,這就意味著你的sa用戶必須得有密碼。否則無法通過系統本身的安全策略。測驗通過就完成了配置。*/

/*
C++連接SQL資料庫第二步 C++與SQL連接初始化
1.在建立的C++專案中引入ADO
具體代碼如下:
*/
#pragma warning(disable:4146)
#pragma warning(disable:4786)
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")






//主程式
int main(){
system("COLOR A"); 
BOOL FLAG=TRUE; 
int  flag=0;
_ConnectionPtr m_pConnection=NULL;  //connection   object's   pointer
_CommandPtr m_pCommand=NULL;             //command   object's   pointer 
_ParameterPtr m_pParameter=NULL;         //Parameter   object's   pointer
_RecordsetPtr m_pRecordset=NULL;
CoInitialize(NULL);                 //COM注冊不可少
int userright=0;                    //用戶權限,1為讀者,2為管理員
char username[12]; 



/**
定義_ConnectionPtr變數后呼叫Connection物件的Open方法建立與服務器的連接。
資料型別_ConnectionPtr實際上是由類模板_com_ptr_t得到的一個具體的實體類。
_ConnectionPtr類封裝了Connection物件的Idispatch介面指標及其一些必要的操作。可以通過這個指標操縱Connection物件。      
**/ 
//例如連接SQLServer資料庫,代碼如下:
//連接到MS SQL Server   
//初始化指標 
   HRESULT hr=m_pConnection.CreateInstance(__uuidof(Connection)); 
   if(FAILED(hr))
   return 0;
//初始化鏈接引數 
   _bstr_t strConnect = "Driver={sql server};server=127.0.0.1;uid=sasa;pwd=123;database=library";  //SQLSERVER
//Database指你系統中的資料庫名 
//執行連接 
   try  
   {    
 // Open方法連接字串必須四BSTR或者_bstr_t型別 
   m_pConnection->Open(strConnect,"", "",NULL);  
   } 
   catch(_com_error &e)
   {
 //MessageBox(e.Description(),"警告",MB_OK|MB_ICONINFORMATION); 
   cout<<e.Description()<<endl; 
   }//發生鏈接錯誤





/**C++連接SQL資料庫第三步 簡單的資料連接**/ 
//定義_RecordsetPtr變數,呼叫它Recordset物件的Open,即可打開一個資料集 
//初始化程序 以下是個實體
//RecordsetPtr pRecordset;
//登錄 
//*** 
   int loginflag=1; 

/* 
輸入一個數字,確定是讀者(1)還是管理員(2)
 */
   int ID=3;
   int IDflag = 1;
   char password[12]; 
   while(ID)
   {
   cout<<"選擇身份:"<<endl<<"1.讀者"<<endl<<"2.管理員"<<endl<<"進行選擇:";
   cin>>ID;

/* 進入讀者登錄界面 */
   if(ID==1)
   {
   system("cls");
   cout<<"輸入讀者編號:";
   cin>>username;
   cout<<"輸入密碼:";  
   cin>>password;  
   char sqllogin[100];  
   sprintf(sqllogin,"select * from Reader where Rno='%s' and Rpassword='%s'",username,password); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(sqllogin), NULL, adCmdText);
     if(!m_pRecordset->adoEOF)
   {
   cout<<"登錄成功!";  
   cout<<(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("uright"))->Value);
   loginflag=0;  

   /* 進入讀者功能界面 */
  // system("cls"); 
   int rchose=4;
   while(rchose)
   {
   //system("cls");
   cout<<"1.查詢圖書資訊"<<endl;
   cout<<"2.查詢借書記錄"<<endl; 
   cout<<"3.退出"<<endl;
   cin>>rchose;
   switch(rchose)
   {
   case 1:
   /* 查詢圖書資訊 */
   char strsql1[100];
   sprintf(strsql1,"select * from Book order by Bno asc"); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(strsql1),NULL,adCmdText);
     if(strsql1!=NULL)
   {
   cout<<" 圖書編號  "<<"    圖書名稱 "<<" 圖書型別 "<<"  圖書定價  "<<" 圖書作者 " <<endl; 
   int flag=0;     
   while(!m_pRecordset->adoEOF)  //遍歷并讀取每列的記錄并輸出 
   {     
   flag=1;    
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bno")->Value<<"   ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bname")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Btype")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bprice")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bwriter")->Value<<endl;       
   m_pRecordset->MoveNext();  
   }    
   if(flag==0)   
   cout<<"不存在任何圖書!"<<endl; 
   }
   break;
   case 2:
   /* 查詢借閱記錄 */
   char strsql2[100];
   sprintf(strsql2,"select * from Record where ReRno ='%s' order by Reno asc",username); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(strsql2),NULL,adCmdText); 
   /* 借閱記錄全部是該讀者的 */
   if(strsql2 !=NULL)
   {
   cout<<" 記錄編號 "<<"  圖書編號 "<<" 借閱日期"<<"  還書日期 "<<" 借閱數量 " <<"管理員編號 " <<endl; 
   int flag=0;     
   while(!m_pRecordset->adoEOF)  //遍歷并讀取每列的記錄并輸出 
   {     
   flag=1;    
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Reno")->Value<<"   ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("ReBno")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Reborrow")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Rereturn")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Recount")->Value<<"      ";   
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("ReAno")->Value<<endl;  
   m_pRecordset->MoveNext();  
   }    
   if(flag==0)   
   cout<<"您還沒有任何借書記錄!"<<endl; 
   }
   break;
   case 3:
   cout<<"退出!"<<endl;
   break;
   default:
   break;
   }//switch
   }//while
   }//登錄成功  
   else   
   cout<<"登錄失敗,請重新登錄!"<<endl;  
   }
   
   /* 進入管理員登錄界面 */
   if(ID==2)
   {
   system("cls");
   cout<<"輸入管理員編號:";
   cin>>username;
   cout<<"輸入密碼:";  
   cin>>password;  
   char sqllogin3[100];  
   sprintf(sqllogin3,"select * from Users where Uno='%s' and Upassword='%s'",username,password); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(sqllogin3), NULL, adCmdText);
 
   if(!m_pRecordset->adoEOF)
   {
   cout<<"登錄成功!";  
   cout<<(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("uright"))->Value);
   loginflag=0;  

   /* 進入管理員功能界面 */
   system("cls"); 
   int rchose1=4;
   while(rchose1)
   {   
   system("cls");
   cout<<"1.查詢圖書資訊"<<endl;
   cout<<"2.查詢借閱記錄"<<endl; 
   cout<<"3.添加借閱記錄"<<endl;
   cout<<"4.洗掉借閱記錄"<<endl;
   cout<<"5.退出"<<endl;
   cin>>rchose1;
   switch(rchose1)  
   { 
   case 1:
   /* 查詢圖書資訊 */
   char strsql3[100];
   sprintf(strsql3,"select * from Book order by Bno asc"); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(strsql3),NULL,adCmdText); 
   if(strsql3 !=NULL)
   {
   cout<<" 圖書編號  "<<"    圖書名稱 "<<" 圖書型別 "<<"  圖書定價  "<<" 圖書作者 " <<endl; 
   int flag=0;     
   while(!m_pRecordset->adoEOF)  //遍歷并讀取每列的記錄并輸出 
   {     
   flag=1;    
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bno")->Value<<"   ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bname")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Btype")->Value<<"      "; 
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bprice")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Bwriter")->Value<<endl;       
   m_pRecordset->MoveNext();  
   }    
   if(flag==0)   
   cout<<"不存在任何圖書!"<<endl; 
   }
   break;
   case 2:
   /* 查詢借閱記錄 */
   char strsql4[100];
   sprintf(strsql4,"select * from Record where ReAno ='%s' order by Reno asc",username); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(strsql4),NULL,adCmdText); 
   /* 所有借閱記錄都是該管理員處理的 */
   if(strsql4 !=NULL)
   {
   cout<<" 記錄編號 "<<"  圖書編號 "<<" 借閱日期"<<"  還書日期 "<<" 借閱數量 " <<"讀者編號 " <<endl; 
   int flag=0;     
   while(!m_pRecordset->adoEOF)  //遍歷并讀取每列的記錄并輸出 
   {     
   flag=1;    
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Reno")->Value<<"   ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("ReBno")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Reborrow")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Rereturn")->Value<<"      ";  
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("Recount")->Value<<"      ";   
   cout<<(char*)(_bstr_t)m_pRecordset->GetFields()->GetItem("ReRno")->Value<<endl;  
   m_pRecordset->MoveNext();  
   }    
   if(flag==0)   
   cout<<"您還沒有處理過任何借閱記錄!"<<endl; 
   }
   break;
   case 3:
   /* 添加借閱記錄 */
   cout<<"現在輸入一條新的借閱記錄!"<<endl;
   getch();
   char reno[10];
   cout<<"記錄編號:"; cin>>reno;
   char rebno[10];
   cout<<"圖書編號:"; cin>>rebno;
   char reborrow[15];
   cout<<"借閱日期:"; cin>>reborrow;
   char rereturn[15];
   cout<<"還書日期:"; cin>>rereturn;
   char rerno[10];
   cout<<"讀者編號:"; cin>>rerno;
   char strsql5[100];
   sprintf(strsql5,"insert into Record values('%s','%s','%s','%s','%s','%s')",reno,rebno,reborrow,rereturn,rerno,username); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(strsql5),NULL,adCmdText); 
   cout<<endl<<"添加借閱記錄成功!"<<endl;
   break;
   case 4:
   /* 添加借閱記錄 */
   cout<<"現在洗掉一條借閱記錄!"<<endl;
   getch();
   char strsql6[100];
   sprintf(strsql6,"select * from Record where ReAno ='%s' order by Reno asc",username); 
   m_pRecordset=m_pConnection->Execute(_bstr_t(strsql6),NULL,adCmdText); 
   /* 所有借閱記錄都是該管理員處理的 */
   if(strsql6 !=NULL)
   {
   cout<<" 記錄編號 "<<"  圖書編號 "<<" 借閱日期"<<"  還書日期 "<<" 借閱數量 " <<"讀者編號 " <<endl; 
   int flag=0;     
   while(!m_pRecordset->adoEOF)  //遍歷并讀取每列的記錄并輸出 
   {     
   flag=1;    
…………

uj5u.com熱心網友回復:

我的代碼應該沒有邏輯和語法問題,求大神指教為什么

uj5u.com熱心網友回復:

求指導惹,拜托拜托

uj5u.com熱心網友回復:

樓主知道你那條select陳述句回傳了多少條記錄嗎?

先在查詢分析器中測驗相應的查詢陳述句沒問題,再在代碼中呼叫。

uj5u.com熱心網友回復:

看下函式是否會拋出例外?

uj5u.com熱心網友回復:

捕捉例外,看看報什么錯

uj5u.com熱心網友回復:

看著像sql陳述句出錯了,先在資料庫執行一下試試

uj5u.com熱心網友回復:

try catch 捕捉 _com_error

參考MSDN的例子

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" 
   no_namespace rename("EOF", "EndOfFile")
#include <stdio.h>
#include "icrsint.h"

void dump_com_error(_com_error &e)
{
  printf("Error\n");
  printf("\a\tCode = %08lx\n", e.Error());
  printf("\a\tCode meaning = %s", e.ErrorMessage());
  _bstr_t bstrSource(e.Source());
  _bstr_t bstrDescription(e.Description());
  printf("\a\tSource = %s\n", (LPCSTR) bstrSource);
  printf("\a\tDescription = %s\n", (LPCSTR) bstrDescription);
}

class CCustomRs : public CADORecordBinding
{
  BEGIN_ADO_BINDING(CCustomRs)
    ADO_VARIABLE_LENGTH_BINDING_ENTRY(1, adVarChar, m_szau_lname, 
      sizeof(m_szau_lname), lau_lnameStatus, FALSE)
    ADO_VARIABLE_LENGTH_BINDING_ENTRY(2, adVarChar, m_szau_fname, 
      sizeof(m_szau_fname), lau_fnameStatus, TRUE)
  END_ADO_BINDING()

public:
  CHAR   m_szau_lname[41];
  ULONG   lau_lnameStatus;
  CHAR   m_szau_fname[41];
  ULONG   lau_fnameStatus;
};

VOID   main()
{
  HRESULT hr;
  IADORecordBinding   *picRs = NULL;

  ::CoInitialize(NULL);

  try 
  {
    _RecordsetPtr pRs.CreateInstance(__uuidof(Recordset));      CCustomRs rs;

    pRs->Open("select FirstName, LastName, Age from Employees", 
    "dsn=pubs;uid=sa;pwd=;", 
    adOpenStatic, adLockOptimistic, adCmdUnknown);

    if (FAILED(hr = pRs->QueryInterface(__uuidof(IADORecordBinding), 
      (LPVOID*)&picRs)))
    _com_issue_error(hr);

    if (FAILED(hr = picRs->BindToRecordset(&rs)))
      _com_issue_error(hr);

    while (VARIANT_FALSE == pRs->EndOfFile)
    {
      // 處理 CCustomRs C++ 實體變數中的資料。

      printf("\a\tName = %s \t%s", 
      (lau_fnameStatus == adFldOK ? m_szau_fname : "<NULL>"), 
      (lau_lnameStatus == adFldOK ? m_szau_lname): "<NULL>"));

      // 更改 Recordset 的當前行。
      // 新當前行的 Recordset 資料將被
      // 自動取出并防止在 CCustomRs C++ 實體變數中

      pRs->MoveNext();
    }
  }
  catch (_com_error &e)
  {
    dump_com_error(e);
  }

  if (picRs)
    picRs->Release();

  CoUninitialize();
};

uj5u.com熱心網友回復:

所查詢的欄位與資料庫表中的欄位不符,或數目不等。 一般是陳述句錯誤。

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/129725.html

標籤:數據庫

上一篇:vs2013錯誤error LNK1104: 無法打開檔案“msvcprtd.lib”

下一篇:CRecordset 例外 不知道哪里出錯了。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more