GVKun编程网logo

仅当总数小于阈值时,才将行插入到SQL Server表中

9

想了解仅当总数小于阈值时,才将行插入到SQLServer表中的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于ASP.net使用表单将数据插入到sqlserver表中、c#–如何准确地将

想了解仅当总数小于阈值时,才将行插入到SQL Server表中的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于ASP.net使用表单将数据插入到sql server表中、c# – 如何准确地将sql脚本插入SqlServer表、java poi读取Excel数据 插入到SQL SERVER数据库中、sql server2000mdf文件可以导入到sql server2012中的新知识。

本文目录一览:

仅当总数小于阈值时,才将行插入到SQL Server表中

仅当总数小于阈值时,才将行插入到SQL Server表中

我正在使用SQL Server 2012。

我有用于存储用户的表。允许的最大用户数为100万。我有一个要在其中注册用户的程序。当我插入时,我想确保用户表中的总行数不会超过100万。我宁愿使用允许最大并发性的方法。

我相信我可以使用ISOLATION
LEVEL为SERIALIZABLE的事务,然后首先计算行数,如果总计数少于100万,则插入行。我的理解是SERIALIZABLE的限制非常严格,并且会随着并发性的增加而导致性能下降。

IF(SELECT COUNT(*) FROM Users) < 100000BEGIN    INSERT INTO Users VALUES (@Name, @Email, @Password)END

如何自动执行此操作,以确保总行数小于100万,但是同时我进行了最小限度的锁定以防止阻止其他事务?

有什么解决方案/最佳做法可以解决这种情况吗?

答案1

小编典典

您可以创建一个SELECT来检查用户数并检索新用户的数据,然后使用该选择将其插入表中:

INSERT INTO users (  name, email, [password])SELECT  ''newUser'' AS name  , ''email@example.com'' AS email  , ''fsfsfs'' AS [password]FROM  usersHAVING  COUNT(*) < 100000;

SELECT当数据库中的用户数少于100000时,该语句将返回一行;如果用户数为100000或更多,则该语句将返回0记录。

整个语句(INSERT..SELECT)在每种情况下均有效,但是当该SELECT部分返回0行时,INSERT将不会插入任何内容。

通过SERIALIZABLE事务级别,可以确保并发写入不会互相干扰。COUNT(*)使用最有效的索引/键对行进行计数,这意味着锁定时间将最短。

由于整个动作是在一个语句中完成的,因此可以防止在SELECT和的执行之间插入INSERT

SQL Fiddle演示

ASP.net使用表单将数据插入到sql server表中

ASP.net使用表单将数据插入到sql server表中

你好
在PHP我会做一个表单与一个动作,让我们说一个process.PHP页面,在该页面中,我将采取的职位值,并使用一个 mysql_query将做一个插入.
现在我迷路了,我正在使用visual studio 2010,在ASP.net中使用sql server 2008创建一个插入.

我已经在App_Data文件夹中定义了一个sql数据库.
基本上我需要(除非有更好的方法)是:

>我如何获得帖子值.
>如何将它们插入数据库.

谢谢.

解决方法

在线有大量的示例代码,关于如何做到这一点.

这里只是一个例子:
http://geekswithblogs.net/dotNETvinz/archive/2009/04/30/creating-a-simple-registration-form-in-asp.net.aspx

您定义以下标记之间的文本框:

<form id="form1" runat="server">

您创建您的文本框并将其定义为runat =“server”,如下所示:

<asp:TextBox ID="TxtName" runat="server"></asp:TextBox>

定义一个按钮来处理你的逻辑,这样(注意onclick):

<asp:Button ID="Button1" runat="server" Text="Save" onclick="Button1_Click" />

在后面的代码中,如果用户通过定义一个名为的方法单击按钮,就可以定义您希望服务器做什么

protected void Button1_Click(object sender,EventArgs e)

或者您可以双击设计视图中的按钮.

这是一个非常快速的示例代码插入表中的按钮单击事件(codebehind)

protected void Button1_Click(object sender,EventArgs e)
{
   string name = TxtName.Text; // Scrub user data

   string connString = ConfigurationManager.ConnectionStrings["yourconnstringInWebConfig"].ConnectionString;
   sqlConnection conn = null;
   try
   {
          conn = new sqlConnection(connString);
          conn.open();

          using(sqlCommand cmd = new sqlCommand())
          {
                 cmd.Conn = conn;
                 cmd.CommandType = CommandType.Text;
                 cmd.CommandText = "INSERT INTO dummyTable(name) Values (@var)";
                 cmd.Parameters.AddWithValue("@var",name);
                 int rowsAffected = cmd.ExecuteNonQuery();
                 if(rowsAffected ==1)
                 {
                        //Success notification
                 }
                 else
                 {
                        //Error notification
                 }
          }
   }
   catch(Exception ex)
   {
          //log error 
          //display friendly error to user
   }
   finally
   {
          if(conn!=null)
          {
                 //cleanup connection i.e close 
          }
   }
}

c# – 如何准确地将sql脚本插入SqlServer表

c# – 如何准确地将sql脚本插入SqlServer表

我想在表中插入一个sql脚本.我很确定这比仅仅将脚本包装在引号中并将其放入insert语句中更复杂(带引号的脚本和更复杂的转义似乎有问题)

那么,如何在sqlServer表中安全地存储任意tsql?

如果需要,我可以使用sql或c#对脚本进行编码.

解决方法

使用参数化查询:

C#

var cmd = new sqlCommand(...);
cmd.CommandText = "INSERT INTO [Bla] ([sql Column]) VALUES (@MyValue)";
cmd.Parameters.AddWithValue("MyValue",yourValueHere);

这将照顾所有的引用等.

如果要使用存储过程,最终会以类似的方式执行它:

var cmd = new sqlCommand(...);
cmd.CommandText = "Storesql";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("MyValue",yourValueHere);

java poi读取Excel数据 插入到SQL SERVER数据库中

java poi读取Excel数据 插入到SQL SERVER数据库中

 Impl实现层 


package org.cupd.spdb.report.importexcel.dao.impl;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.cupd.spdb.report.importexcel.dao.CardBinDao;
import com.websurf.spdb.bo.DBConnBOImpl;
public class CardBinDaoImpl implements CardBinDao {
 
 private static final Log log=LogFactory.getLog(CardBinDaoImpl.class);
 private static DBConnBOImpl dbConn = new DBConnBOImpl();
   PreparedStatement ps = null;
   Connection conn = null;
   ResultSet rs = null;
   private String filePath="E:\\Microsoft Excel.xlsx";
   
   /**
    * 插入数据
    */
   public boolean insertDB(){ 
     boolean flag=true;
      try {
       //文件流指向excel文件   
      // FileInputStream fin=new FileInputStream(filePath);   
       XSSFWorkbook workbook=new XSSFWorkbook(filePath);//创建工作薄
       XSSFSheet sheet=workbook.getSheetAt(0);//得到工作表   
       XSSFRow row=null;//对应excel的行   
       XSSFCell cell=null;//对应excel的列   
         
       int totalRow=sheet.getLastRowNum();//得到excel的总记录条数 
       log.info("得到excel的总记录数"+totalRow);
       //以下的字段一一对应数据库表的字段   
    String cardName="";
    String cardType="";
    String cardBin="";
    String cardLength="";
    String activityCode="";
    String note="";
       String sql ="insert into BizCardBin(cardName,cardType,cardBin,cardLength,activityCode,note) values(?,?,?,?,?,?)";
       for(int i=2;i<=totalRow;i++){
         row=sheet.getRow(i);
         cell=row.getCell((short) 0);   
         cardName=cell.getStringCellValue().toString(); 
         cell=row.getCell((short) 1);   
         cardType=cell.getStringCellValue().toString();
         cell=row.getCell((short) 2);   
         cardBin=cell.getStringCellValue().toString();
         cell=row.getCell((short) 3); 
         cardLength=cell.getStringCellValue().toString();
         cell=row.getCell((short) 4);   
         activityCode=cell.getStringCellValue().toString();   
         cell=row.getCell((short) 5);
         note=cell.getStringCellValue().toString();
           conn=dbConn.getConnection();
           log.info("获取JDBC连接完成");
         ps=conn.prepareStatement(sql);   
         ps.setString(1,cardName);   
         ps.setString(2,cardType);   
         ps.setString(3,cardBin);   
         ps.setString(4,cardLength);   
         ps.setString(5,activityCode); 
         ps.setString(6,note);
           
         ps.execute();   
         System.out.println("preparestatement successful");
        } 
        dbConnClose(conn, dbConn);
    psClose(ps, rs);
         
       } catch (FileNotFoundException e) {   
        flag=false;   
        e.printStackTrace();   
       } catch(IOException ex){   
        flag=false;   
         ex.printStackTrace();   
       } catch(SQLException exx){   
        flag=false;   
        exx.printStackTrace();   
       }
      
      return flag;  
    }  
   public static void main(String[] args) {
    CardBinDaoImpl e=new CardBinDaoImpl();
    e.insertDB();
   }
  
  
     /** 
      * 插入数据 只需要传入插入sql即可 
      * 插入sql的样例:insert into t_department values(''D004'',''金融部''); 
      * @param insert 插入语句 
      * @return 
      * @throws SQLException  
      */  
  /*public int insertCardBin(BizCardBin cardBin){
   int result=0;
   PreparedStatement ps = null;
   Connection conn = null;
   String sql ="insert into BizCardBin(cardName,cardTyoe,cardBin,cardLength,cardLength,activityCode,note) values(?,?,?,?,?,?,?)";
    try {
     conn=dbConn.getConnection();
     log.info("获取JDBC连接完成");
     ps = conn.prepareStatement(sql);
     ps.setString(1, cardBin.getCardName());
     ps.setString(2, cardBin.getCardType());
     ps.setString(3, cardBin.getCardBin());
     ps.setString(4, cardBin.getCardLength());
     ps.setString(5, cardBin.getActivityCode());
     ps.setString(6, cardBin.getNote());
     result = ps.executeUpdate();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     log.error("SQL Exception "+ e);
     e.printStackTrace();
     return 0;
    }finally{
     dbConnClose(conn, dbConn);
     psClose(ps, rs);
    }
    return result;
  }
 */
 
 public void dbConnClose(Connection conn,DBConnBOImpl dbConn){
  if(conn!=null){
   dbConn.close(conn);
  }
 }
 
 private static void psClose(final PreparedStatement preparedStatement,
   final ResultSet resultSet) {
  try {
   if (resultSet != null) {
    resultSet.close();
   }
   if (preparedStatement != null) {
    preparedStatement.close();
   }
  } catch (SQLException e) {
   log.error("error", e);
  }
 }
 
}

Action层

public class CardBinAction extends DispatchAction {
 public ActionForward showCardBinPage(ActionMapping mapping, ActionForm actionform,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  return mapping.findForward("showCardBinPage");
 }
 
 
private  CardBinService CardBinService=new CardBinServiceImpl();
 
 public int insertCardBin()
 {
  int result=CardBinService.insertDB();
  
  return result;
 }

sql server2000mdf文件可以导入到sql server2012中

sql server2000mdf文件可以导入到sql server2012中

1、附加数据库

 

2、“添加”mdf文件所在路径

3、选择“脚本”,确定

 

 出现如下查询语句:

 

 4、单击执行,即可

 

备注:执行时可能会因为权限不足而报错;解决办法如下

 

1)修改文件权限即可

【右键】该mdf文件和ldf文件,选择【属性】,选择【安全】,选择【自己的用户】,【编辑】,添加【完全控制】,最后应用保存即可:

 

 

 

 

今天的关于仅当总数小于阈值时,才将行插入到SQL Server表中的分享已经结束,谢谢您的关注,如果想了解更多关于ASP.net使用表单将数据插入到sql server表中、c# – 如何准确地将sql脚本插入SqlServer表、java poi读取Excel数据 插入到SQL SERVER数据库中、sql server2000mdf文件可以导入到sql server2012中的相关知识,请在本站进行查询。

本文标签: